// This file is coded in ES5 and CommonJS to be compatible with
// `create-locale`.

const forEach = require('lodash/forEach')

const messages = {
  alpha: 'Alpha',
  alerts: 'Alerts',
  connected: 'Connected',
  dcScope: 'DC Scope',
  deployDcScope: 'Deploy DC Scope',
  dcNetScope: 'DC NetScope',
  deployDcNetScope: 'Deploy DC NetScope',
  description: 'Description',
  deleteSourceVm: 'Delete source VM',
  disable: 'Disable',
  diskState: 'Disk state',
  download: 'Download',
  enable: 'Enable',
  expiration: 'Expiration',
  hostIp: 'Host IP',
  interfaces: 'Interfaces',
  keyValue: '{key}: {value}',
  esxiLibraryInfo: 'The V2V tool needs the vddk library, provided by Broadcom. Please download it from their website',
  esxiLibraryLink: 'Download link',

  esxiVddkLibrary: 'Drop the tar.gz file of the vddk library (linux)',
  esxiVddkLibraryImport: 'Import and install the Vddk library. VDDK9 need nbdkit 1.42+',
  esxiLibraryManualInstall:
    'For other systems, you can install manually from https://gitlab.com/nbdkit/ . For reference the list of packages need for a debian 13 is **git dh-autoreconf pkg-config make libxml2-dev ocaml libc-bin**',
  esxiLibraryAutoInstall: 'install {library} (debian based system)',
  esxiLibraryInstalling:
    "Installing {library} can take a few minutes. You can check the progress in the XO tasks screen while it's running.",
  esxiProgressLinkText: 'Track progress',

  esxiLibraryOutdated:
    '{library} library is outdated expecting {expectedVersion}, got {version}. Please uninstall it and install the required version.',
  esxiCheckingPrerequisite: 'Checking prerequisite on XO',
  esxiCheckedPrerequisite: 'Result of the prerequisite check on XO',

  esxiCheckingPrerequisiteError: 'Must be corrected before importing VM',
  esxiCheckedPrerequisiteVersion: 'expected version {expectedVersion} , {version} installed',
  esxiImportSslCertificate: 'Skip SSL check',
  esxiImportThin: 'Thin mode',
  esxiImportThinDescription:
    'Disk created in thin mode (less space used). Data is read twice, no visible task or progress at first',
  esxiImportStopSource: 'Stop the source VM',
  esxiImportStopSourceDescription:
    'Source VM stopped before the last delta transfer (after final snapshot). Needed to fully transfer a running VM',
  esxiImportStopOnErrorDescription: 'Stop on the first error when importing VMs',
  inUse: 'In use',
  nImportVmsInParallel: 'Number of VMs to import in parallel',
  node: 'Node',
  pifs: 'PIFs',
  stopOnError: 'Stop on error',
  uuid: 'UUID',
  vdi: 'VDI',
  vmSrUsage: 'Storage: {used} used of {total} ({free} free)',

  new: 'New',
  nodeStatus: 'Node status',
  notDefined: 'Not defined',
  status: 'Status',
  statusConnecting: 'Connecting',
  statusDisconnected: 'Disconnected',
  statusLoading: 'Loading…',
  errorPageNotFound: 'Page not found',
  errorNoSuchItem: 'No such item',
  errorUnknownItem: 'Unknown {type}',
  generateNewMacAddress: 'Generate new MAC addresses',
  memoryFree: '{memoryFree} RAM free',
  configured: 'Configured',
  notConfigured: 'Not configured',
  utcDate: 'UTC date',
  utcTime: 'UTC time',
  date: 'Date',
  notifications: 'Notifications',
  noNotifications: 'No notifications so far.',
  notificationNew: 'NEW!',
  notYetAvailableForXs8: 'Not yet available for XenServer 8',
  moreDetails: 'More details',
  messageSubject: 'Subject',
  messageFrom: 'From',
  messageReply: 'Reply',
  sr: 'SR',
  subdirectory: 'Subdirectory',
  tryXoa: 'Try XOA for free and deploy it here.',
  notInstalled: 'Not installed',

  editableLongClickPlaceholder: 'Long click to edit',
  editableClickPlaceholder: 'Click to edit',
  browseFiles: 'Browse files',
  showLogs: 'Show logs',
  noValue: 'None',
  noExpiration: 'No expiration',
  compression: 'Compression',
  core: 'Core',
  cpu: 'CPU',
  multipathing: 'Multipathing',
  multipathingDisabled: 'Multipathing disabled',
  enableMultipathing: 'Enable multipathing',
  disableMultipathing: 'Disable multipathing',
  enableAllHostsMultipathing: 'Enable multipathing for all hosts',
  disableAllHostsMultipathing: 'Disable multipathing for all hosts',
  paths: 'Paths',
  pbdDisconnected: 'PBD disconnected',
  hasInactivePath: 'Has an inactive path',
  pools: 'Pools',
  remotes: 'Remotes',
  schedulerGranularity: 'Scheduler granularity',
  setCbtError: 'Set CBT error',
  socket: 'Socket',
  type: 'Type',
  restore: 'Restore',
  delete: 'Delete',
  vms: 'VMs',
  cpusMax: 'Max vCPUs',
  metadata: 'Metadata',
  chooseBackup: 'Choose a backup',
  temporarilyDisabled: 'Temporarily disabled',
  clickToShowError: 'Click to show error',
  backupJobs: 'Backup jobs',
  iscsiSessions: '({ nSessions, number }) iSCSI session{nSessions, plural, one {} other {s}}',
  requiresAdminPermissions: 'Requires admin permissions',
  proxy: 'Proxy',
  proxies: 'Proxies',
  name: 'Name',
  value: 'Value',
  address: 'Address',
  vm: 'VM',
  destinationSR: 'Destination SR',
  destinationNetwork: 'Destination network',
  dhcp: 'DHCP',
  id: 'ID',
  ip: 'IP',
  static: 'Static',
  user: 'User',
  deletedUser: 'deleted ({ name })',
  networkConfiguration: 'Network configuration',
  integrity: 'Integrity',
  altered: 'Altered',
  missing: 'Missing',
  verified: 'Verified',
  snapshotMode: 'Snapshot mode',
  normal: 'Normal',
  withMemory: 'With memory',
  offline: 'Offline',
  noLicenseAvailable: 'No license available',
  emailPlaceholderExample: 'Email address, e.g.: it@company.net',
  unknown: 'Unknown',
  upgradesAvailable: 'Upgrades available',
  advancedSettings: 'Advanced settings',
  forceUpgrade: 'Force upgrade',
  txChecksumming: 'TX checksumming',
  thick: 'Thick',
  thin: 'Thin',
  unknownSize: 'Unknown size',
  installedCertificates: 'Installed certificates',
  expiry: 'Expiry',
  fingerprint: 'Fingerprint',
  certificate: 'Certificate (PEM)',
  certificateChain: 'Certificate chain (PEM)',
  privateKey: 'Private key (PKCS#8)',
  installNewCertificate: 'Install new certificate',
  replaceExistingCertificate: 'Replace existing certificate',
  customFields: 'Custom fields',
  addColor: 'Add color',
  addCustomField: 'Add custom field',
  advancedTagCreation: 'Advanced tag creation',
  availableXoaPremium: 'Available in XOA Premium',
  availableXoaPlan: 'Available in XOA {plan}',
  detach: 'Detach',
  editCustomField: 'Edit custom field',
  deleteCustomField: 'Delete custom field',
  onlyAvailableXoaUsers: 'Only available to XOA users',
  removeColor: 'Remove color',
  xcpNg: 'XCP-ng',
  noFileSelected: 'No file selected',
  nRetriesVmBackupFailures: 'Number of retries if VM backup fails',
  sequence: 'Sequence',
  sequences: 'Sequences',

  // ----- Modals -----
  alertOk: 'OK',
  confirmOk: 'OK',
  formOk: 'OK',
  genericCancel: 'Cancel',
  enterConfirmText: 'Enter the following text to confirm:',

  // ----- Filters -----
  onError: 'On error',
  successful: 'Successful',
  filterKeepFailed: 'Keep only failed',
  filterOutShortTasks: 'Hide short tasks',
  filterOnlyManaged: 'Managed disks',
  filterOnlyOrphaned: 'Orphaned disks',
  filterOnlyRegular: 'Normal disks',
  filterOnlyRunningVms: 'Running VMs',
  filterOnlySnapshots: 'Snapshot disks',
  filterOnlyUnmanaged: 'Unmanaged disks',
  filterSaveAs: 'Save…',
  filterSyntaxLinkTooltip: 'Explore the search syntax in the documentation',
  filterVifsOnlyConnected: 'Connected VIFs',
  filterVifsOnlyDisconnected: 'Disconnected VIFs',
  filterRemotesOnlyConnected: 'Connected remotes',
  filterRemotesOnlyDisconnected: 'Disconnected remotes',

  // ----- Copiable component -----
  copyToClipboard: 'Copy to clipboard',
  copyToClipboardVdiUuid: 'Copy VDI UUID',
  copyUuid: 'Copy {uuid}',
  copyValue: 'Copy {value}',

  // ----- Pills -----
  pillMaster: 'Master',

  // ----- Titles -----
  homePage: 'Home',
  homeVmPage: 'VMs',
  homeHostPage: 'Hosts',
  homePoolPage: 'Pools',
  homeTemplatePage: 'Templates',
  homeSrPage: 'Storage',
  dashboardPage: 'Dashboard',
  overviewDashboardPage: 'Overview',
  overviewVisualizationDashboardPage: 'Visualizations',
  overviewStatsDashboardPage: 'Statistics',
  overviewHealthDashboardPage: 'Health',
  selfServicePage: 'Self service',
  backupPage: 'Backup',
  jobsPage: 'Jobs',
  xoaPage: 'XOA',
  updatePage: 'Updates',
  licensesPage: 'Licenses',
  notificationsPage: 'Notifications',
  supportPage: 'Support',
  settingsPage: 'Settings',
  settingsAuditPage: 'Audit',
  settingsServersPage: 'Servers',
  settingsUsersPage: 'Users',
  settingsGroupsPage: 'Groups',
  settingsAclsPage: 'ACLs',
  settingsPluginsPage: 'Plugins',
  settingsLogsPage: 'Logs',
  settingsCloudConfigsPage: 'Cloud configs',
  settingsIpsPage: 'IPs',
  aboutPage: 'About',
  aboutXoaPlan: 'About XO {xoaPlan}',
  newMenu: 'New',
  taskMenu: 'Tasks',
  taskPage: 'Tasks',
  newNetworkPage: 'Network',
  newVmPage: 'VM',
  newSrPage: 'Storage',
  newServerPage: 'Server',
  newImport: 'Import',
  xosan: 'XOSAN',
  backupOverviewPage: 'Overview',
  backupNewPage: 'New',
  backupRemotesPage: 'Remotes',
  backupRestorePage: 'Restore',
  backupFileRestorePage: 'File restore',
  schedule: 'Schedule',
  backup: 'Backup',
  rollingSnapshot: 'Rolling Snapshot',
  deltaBackup: 'Delta Backup',
  disasterRecovery: 'Disaster Recovery',
  continuousReplication: 'Continuous Replication',
  backupType: 'Backup type',
  poolMetadata: 'Pool metadata',
  xoConfig: 'XO config',
  backupVms: 'VM Backup & Replication',
  backupMetadata: 'XO config & Pool metadata Backup',
  backupModeSourceRemoteRequired: 'Backup mode and source remote are required',
  mirrorBackup: 'Mirror backup',
  mirrorBackupVms: 'VM Mirror Backup',
  mirrorAllVmBackups: 'Mirror all {mode} VM backups',
  jobsOverviewPage: 'Overview',
  jobsNewPage: 'New',
  jobsSchedulingPage: 'Scheduling',
  customJob: 'Custom Job',
  userPage: 'User',
  xoa: 'XOA',
  restApiDoc: 'REST API doc',
  tryXo6: 'Try XO 6',
  // ----- Support -----
  noSupport: 'No support',
  freeUpgrade: 'Free upgrade!',
  checkXoa: 'Check XOA',
  xoaCheck: 'XOA check',
  closeTunnel: 'Close tunnel',
  createSupportTicket: 'Create a support ticket',
  restartXoServer: 'Restart XO Server',
  restartXoServerConfirm:
    'Restarting XO Server will interrupt any backup job or XO task that is currently running. Xen Orchestra will also be unavailable for a few seconds. Are you sure you want to restart XO Server?',
  openTunnel: 'Open tunnel',
  supportCommunity: 'The XOA check and the support tunnel are available in XOA.',
  supportTunnel: 'Support tunnel',
  supportTunnelClosed: 'The support tunnel is closed.',

  // ----- Sign out -----
  signOut: 'Sign out',

  // ----- User Profile -----
  editUserProfile: 'Edit my settings {username}',
  xsClientId: 'XenServer Client ID',
  uploadClientId: 'Upload Client ID file',
  forgetClientId: 'Forget Client ID',
  forgetXsCredentialsConfirm: 'Are you sure you want to forget your XenServer Client ID?',
  forgetXsCredentialsError: 'Could not forget Client ID',
  forgetXsCredentialsSuccess: 'Client ID forgotten',
  setXsCredentialsError: 'Could not upload Client ID',
  setXsCredentialsSuccess: 'Client ID uploaded',

  // ----- Home view ------
  allVms: 'All VMs',
  backedUpVms: 'Backed up VMs',
  notBackedUpVms: 'Not backed up VMs',
  homeFetchingData: 'Fetching data…',
  homeWelcome: 'Welcome to Xen Orchestra!',
  homeWelcomeText: 'Add your XCP-ng hosts or pools',
  homeConnectServerText: 'Some XCP-ng hosts have been registered but are not connected',
  homeHelp: 'Want some help?',
  homeAddServer: 'Add server',
  homeConnectServer: 'Connect servers',
  homeOnlineDoc: 'Online doc',
  homeProSupport: 'Pro support',
  homeNoVms: 'There are no VMs!',
  homeNoVmsOr: 'Or…',
  homeImportVm: 'Import VM',
  homeImportVmMessage: 'Import an existing VM in xva format',
  homeRestoreBackup: 'Restore a backup',
  homeRestoreBackupMessage: 'Restore a backup from a remote store',
  homeNewVmMessage: 'This will create a new VM',
  homeFilters: 'Filters',
  homeNoMatches: 'No results! Click here to reset your filters',
  homeTypePool: 'Pool',
  homeTypeHost: 'Host',
  homeTypeVm: 'VM',
  homeTypeSr: 'SR',
  homeTypeVmTemplate: 'Template',
  homeSort: 'Sort',
  homeAllPools: 'Pools',
  homeAllHosts: 'Hosts',
  homeAllTags: 'Tags',
  homeAllResourceSets: 'Resource sets',
  homeNewVm: 'New VM',
  homeFilterNone: 'None',
  homeFilterDisabledHosts: 'Disabled hosts',
  homeFilterPendingVms: 'Pending VMs',
  homeFilterHvmGuests: 'HVM guests',
  homeSortBy: 'Sort by',
  homeSortByCpus: 'CPUs',
  homeSortByInstallTime: 'Install time',
  homeSortByStartTime: 'Start time',
  homeSortByName: 'Name',
  homeSortByPowerstate: 'Power state',
  homeSortByRAM: 'RAM',
  homeSortByShared: 'Shared/Not shared',
  homeSortBySize: 'Size',
  homeSortByType: 'Type',
  homeSortByUsage: 'Usage',
  homeSortVmsBySnapshots: 'Snapshots',
  homeSortByContainer: 'Container',
  homeSortByPool: 'Pool',
  homeDisplayedItems: '{displayed, number}x {icon} (of {total, number})',
  homeSelectedItems: '{selected, number}x {icon} selected (of {total, number})',
  homeMore: 'More',
  homeMigrateTo: 'Migrate to…',
  homeMissingPatches: 'Missing patches',
  homePoolMaster: 'Master:',
  homeResourceSet: 'Resource set: {resourceSet}',
  homeSrVdisToCoalesce: 'Some VDIs need to be coalesced',
  highAvailability: 'High Availability',
  powerState: 'Power state',
  srSharedType: 'Shared {type}',
  warningHostTimeTooltip: 'Host time and XOA time are not consistent with each other',
  notAllHostsHaveTheSameVersion: 'Not all hosts within {pool} have the same version',
  sortByDisksUsage: 'Disks usage',

  // ----- Home snapshots -----
  snapshotVmsName: 'Name',
  snapshotVmsDescription: 'Description',

  // ----- Common components -----
  sortedTableAllItemsSelected: 'All of them are selected ({nItems, number})',
  sortedTableNoItems: 'No items found',
  sortedTableNumberOfFilteredItems: '{nFiltered, number} of {nTotal, number} items',
  sortedTableNumberOfItems: '{nTotal, number} items',
  sortedTableNumberOfSelectedItems: '{nSelected, number} selected',
  sortedTableSelectAllItems: 'Click here to select all items',
  chooseCompressionGzipOption: 'GZIP (very slow)',
  chooseCompressionZstdOption: 'Zstd (fast, XCP-ng only)',

  // ----- state -----
  state: 'State',
  stateDisabled: 'Disabled',
  stateEnabled: 'Enabled',

  // ----- Labels -----
  labelDisk: 'Disk',
  labelMerge: 'Merge',
  labelSize: 'Size',
  labelSpeed: 'Speed',
  labelSr: 'SR',
  labelTransfer: 'Transfer',
  labelVm: 'VM',

  // ----- Forms -----
  formCancel: 'Cancel',
  formCreate: 'Create',
  formDescription: 'Description',
  formEdit: 'Edit',
  formId: 'ID',
  formName: 'Name',
  formReset: 'Reset',
  formSave: 'Save',
  formNotes: 'Notes',
  add: 'Add',
  selectAll: 'Select all',
  remove: 'Remove',
  preview: 'Preview',
  action: 'Action',
  item: 'Item',
  noSelectedValue: 'No selected value',
  filterByTags: 'Filter by tags',
  selectSubjects: 'Choose user(s) and/or group(s)',
  selectObjects: 'Select object(s)…',
  selectRole: 'Choose a role',
  selectHostFirst: 'Select a host first',
  selectHosts: 'Select host(s)…',
  selectHostsVms: 'Select object(s)…',
  selectNetworks: 'Select network(s)…',
  selectPcis: 'Select PCI(s)…',
  selectPifs: 'Select PIF(s)…',
  selectPools: 'Select pool(s)…',
  selectRemotes: 'Select remote(s)…',
  selectProxies: 'Select proxy(ies)…',
  selectProxy: 'Select proxy…',
  selectResourceSets: 'Select resource set(s)…',
  selectResourceSetsVmTemplate: 'Select template(s)…',
  selectResourceSetsSr: 'Select SR(s)…',
  selectResourceSetsNetwork: 'Select network(s)…',
  selectResourceSetsVdi: 'Select disk(s)…',
  selectSshKey: 'Select SSH key(s)…',
  selectSrs: 'Select SR(s)…',
  selectVms: 'Select VM(s)…',
  selectVmSnapshots: 'Select snapshot(s)…',
  selectVmTemplates: 'Select VM template(s)…',
  selectTags: 'Select tag(s)…',
  selectVdis: 'Select disk(s)…',
  selectTimezone: 'Select timezone…',
  selectIp: 'Select IP(s)…',
  selectIpPool: 'Select IP pool(s)…',
  selectVgpuType: 'Select VGPU type(s)…',
  fillOptionalInformations: 'Fill information (optional)',
  selectTableReset: 'Reset',
  selectCloudConfigs: 'Select cloud config(s)…',
  selectNetworkConfigs: 'Select network config(s)…',

  // --- Dates/Scheduler ---

  schedulingMonth: 'Month',
  schedulingDay: 'Day',
  schedulingSetWeekDayMode: 'Switch to week days',
  schedulingSetMonthDayMode: 'Switch to month days',
  schedulingHour: 'Hour',
  schedulingMinute: 'Minute',
  selectTableAllMonth: 'Every month',
  selectTableAllDay: 'Every day',
  selectTableAllHour: 'Every hour',
  selectTableAllMinute: 'Every minute',
  timezonePickerUseLocalTime: 'Web browser timezone',
  serverTimezoneOption: 'Server timezone ({value})',
  cronPattern: 'Cron Pattern:',
  successfulJobCall: 'Successful',
  failedJobCall: 'Failed',
  jobCallSkipped: 'Skipped',
  jobCallInProgess: 'In progress',
  jobTransferredDataSize: 'Transfer size:',
  jobTransferredDataSpeed: 'Transfer speed:',
  operationSize: 'Size',
  operationSpeed: 'Speed',
  exportType: 'Type',
  jobMergedDataSize: 'Merge size:',
  jobMergedDataSpeed: 'Merge speed:',
  allJobCalls: 'All',
  job: 'Job',
  jobModalTitle: 'Job {job}',
  jobId: 'ID',
  jobType: 'Type',
  jobName: 'Name',
  jobModes: 'Modes',
  jobNamePlaceholder: 'Name of your job (forbidden: "_")',
  jobStart: 'Start',
  jobEnd: 'End',
  jobDuration: 'Duration',
  jobStatus: 'Status',
  jobAction: 'Action',
  jobTag: 'Tag',
  jobScheduling: 'Scheduling',
  jobTimezone: 'Timezone',
  jobServerTimezone: 'Server',
  runJob: 'Run job',
  cancelJob: 'Cancel job',
  runJobVerbose: 'Onetime job started. See overview for logs.',
  jobEdit: 'Edit job',
  jobDelete: 'Delete',
  jobFinished: 'Finished',
  jobInterrupted: 'Interrupted',
  jobStarted: 'Started',
  jobFailed: 'Failed',
  jobSkipped: 'Skipped',
  jobSuccess: 'Successful',
  allTasks: 'All',
  taskDeleteLog: 'Delete task log',
  taskStart: 'Start',
  taskEnd: 'End',
  taskDuration: 'Duration',
  taskSuccess: 'Successful',
  taskFailed: 'Failed',
  taskSkipped: 'Skipped',
  taskStarted: 'Started',
  taskInterrupted: 'Interrupted',
  taskAborted: 'Aborted',
  taskTransferredDataSize: 'Transfer size',
  taskTransferredDataSpeed: 'Transfer speed',
  taskMergedDataSize: 'Merge size',
  taskMergedDataSpeed: 'Merge speed',
  taskError: 'Error',
  taskEstimatedEnd: 'Estimated end',
  taskReason: 'Reason',
  taskOpenRawLog: 'Open raw log',
  saveBackupJob: 'Save',
  deleteBackupSchedule: 'Remove backup job',
  deleteBackupScheduleQuestion: 'Are you sure you want to delete this backup job?',
  deleteSelectedJobs: 'Delete selected jobs',
  scheduleEnableAfterCreation: 'Enable immediately after creation',
  scheduleEditMessage: 'You are editing schedule {name} ({id}). Saving will override previous schedule state.',
  jobEditMessage: 'You are editing job {name} ({id}). Saving will override previous job state.',
  scheduleEdit: 'Edit schedule',
  missingBackupName: "A name is required to create the backup's job!",
  missingVms: 'Missing VMs!',
  missingBackupMode: 'You need to choose a backup mode!',
  missingRemote: 'Missing remote!',
  missingRemotes: 'Missing remotes!',
  missingSrs: 'Missing SRs!',
  missingPools: 'Missing pools!',
  missingSchedules: 'Missing schedules!',
  missingRetentions: 'The modes need at least a schedule with retention higher than 0',
  missingExportRetention: 'The Backup mode and the Delta Backup mode require backup retention to be higher than 0!',
  missingCopyRetention: 'The CR mode and The DR mode require replication retention to be higher than 0!',
  missingSnapshotRetention: 'The Rolling Snapshot mode requires snapshot retention to be higher than 0!',
  deltaChainRetentionWarning: 'Either the full backup interval or the backup retention should be lower than 50.',
  retentionNeeded: 'Requires one retention to be higher than 0!',
  newScheduleError: 'Invalid schedule',
  createRemoteMessage: 'No remotes found, please click on the remotes settings button to create one!',
  remotesSettings: 'Remotes settings',
  pluginsSettings: 'Plugins settings',
  pluginsWarning: 'To receive the report, the plugins backup-reports and transport-email need to be loaded.',
  selectSchedule: 'Select a schedule…',
  scheduleAdd: 'Add a schedule',
  scheduleDelete: 'Delete',
  scheduleRun: 'Run schedule',
  scheduleSequence: 'Schedule sequence',
  unnamedSchedule: 'Unnamed schedule',
  unnamedJob: 'Unnamed Job',
  deleteSelectedSchedules: 'Delete selected schedules',
  noScheduledJobs: 'No scheduled jobs.',
  legacySnapshotsLink: 'You can delete all your legacy backup snapshots.',
  newSchedule: 'New schedule',
  noSchedules: 'No schedules found',
  jobActionPlaceHolder: 'Select an xo-server API command',
  jobTimeoutPlaceHolder: 'Timeout (number of seconds after which a VM is considered failed)',
  jobSchedules: 'Schedules',
  jobScheduleNamePlaceHolder: 'Name of your schedule',
  jobScheduleJobPlaceHolder: 'Select a job',
  jobOwnerPlaceholder: 'Job owner',
  jobUserNotFound: "This job's creator no longer exists",
  redirectToMatchingVms: 'Click here to see the matching VMs',
  noMatchingVms: 'There are no matching VMs!',
  allMatchingVms: '{icon} See the matching VMs ({nMatchingVms, number})',
  runBackupNgJobConfirm: 'Are you sure you want to run {name} ({id})?',
  runBackupJobWarningNVms: 'This job will backup {nVms, number} VM{nVms, plural, one {} other {s}}.',
  cancelJobConfirm: 'Are you sure you want to cancel {name} ({id})?',
  scheduleDstWarning:
    'If your country participates in DST, it is advised that you avoid scheduling jobs at the time of change. e.g. 2AM to 3AM for US.',

  // ------ New backup -----
  checkBackup: 'Restore health check',
  newBackupAdvancedSettings: 'Advanced settings',
  newBackupSettings: 'Settings',
  reportWhenAlways: 'Always',
  reportWhenSkippedFailure: 'Skipped and failure',
  reportWhenFailure: 'Failure',
  reportWhenNever: 'Never',
  reportRecipients: 'Report recipients',
  reportWhen: 'Report when',
  concurrency: 'Concurrency',
  mergeBackupsSynchronously: 'Merge backups synchronously',
  mergeBackupsSynchronouslyTooltip:
    'This will use more resources on the backup thread, but ensure there is no locking error when chaining multiple backup jobs on the same remote',
  newBackupSelection: 'Select your backup type:',
  snapshotRetention: 'Snapshot retention',
  backupName: 'Name',
  checkpointSnapshot: 'Checkpoint snapshot',
  offlineSnapshot: 'Offline snapshot',
  offlineBackup: 'Offline backup',
  offlineBackupInfo: 'Export VMs without snapshotting them. The VMs will be shutdown during the export.',
  timeout: 'Timeout',
  timeoutInfo: 'Number of hours after which a job is considered failed',
  fullBackupInterval: 'Full backup interval',
  forceFullBackup: 'Force full backup',
  timeoutUnit: 'In hours',
  dbAndDrRequireEnterprisePlan: 'Delta Backup and DR require an Enterprise plan',
  crRequiresPremiumPlan: 'CR requires a Premium plan',
  smartBackupModeTitle: 'Smart mode',
  backupTargetRemotes: 'Target remotes (for export)',
  backupTargetSrs: 'Target SRs (for replication)',
  localRemoteWarningTitle: 'Local remote selected',
  crOnThickProvisionedSrWarning:
    'Tip: Using thin-provisioned storage will consume less space. Please click on the icon to get more information',
  vmsOnThinProvisionedSrTip:
    'Tip: Creating VMs on thin-provisioned storage will consume less space. Please click on the icon to get more information',
  deltaBackupOnOutdatedXenServerWarning: 'Delta Backup and Continuous Replication require at least XenServer 6.5.',
  backupNgLinkToDocumentationMessage: 'Click for more information about the backup methods.',
  localRemoteWarningMessage: 'Warning: Local remotes will use limited XOA disk space. Only for advanced users.',
  editBackupVmsTitle: 'VMs',
  editBackupSmartStatusTitle: 'VMs statuses',
  editBackupSmartResidentOn: 'Resident on',
  editBackupSmartNotResidentOn: 'Not resident on',
  editBackupSmartPools: 'Pools',
  editBackupSmartTags: 'Tags',
  editBackupSmartTagsInfo:
    "VMs with tags in the form of <b>xo:no-bak</b> or <b>xo:no-bak=Reason</b>won't be included in any backup.For example, ephemeral VMs created by health check have this tag",
  sampleOfMatchingVms: 'Sample of matching VMs',
  backupReplicatedVmsInfo:
    'Replicated VMs (VMs with Continuous Replication or Disaster Recovery tag) must be excluded!',
  editBackupSmartTagsTitle: 'VMs Tags',
  editBackupSmartExcludedTagsTitle: 'Excluded VMs tags',
  deleteOldBackupsFirst: 'Delete first',
  deleteOldBackupsFirstMessage:
    'Delete old backups before backing up the VMs. If the new backup fails, you will lose your old backups.',
  customTag: 'Custom tag',
  editJobNotFound: "The job you're trying to edit wasn't found",
  preferNbd: 'Use NBD to transfer disk if available',
  preferNbdInformation: 'A network accessible by XO or the proxy must have NBD enabled.',
  nbdConcurrency: 'Number of NBD connection per disk',
  cbtDestroySnapshotData: 'Purge snapshot data when using CBT.',
  cbtDestroySnapshotDataInformation:
    "This will automatically enable Change Block Tracking (CBT) on the disks. The snapshot won't use any notable space on the SR, won't be shown in the UI and won't be usable to do a rollback nor differential restores",
  cbtDestroySnapshotDataDisabledInformation:
    'Snapshot data can be purged only when NBD is enabled and rolling snapshot is not used',
  shorterBackupReports: 'Shorter backup reports',
  longTermRetention: 'Long-term retention of backups',
  numberOfDailyBackupsKept: 'Number of daily backups kept',
  numberOfWeeklyBackupsKept: 'Number of weekly backups kept',
  numberOfMonthlyBackupsKept: 'Number of monthly backups kept',
  numberOfYearlyBackupsKept: 'Number of yearly backups kept',
  hideSuccessfulItems: 'Hide successful items in failure reports',

  // ------ New Remote -----
  newRemote: 'New file system remote',
  remoteTypeLocal: 'Local',
  remoteTypeNfs: 'NFS',
  remoteTypeSmb: 'SMB',
  remoteTypeS3: 'Amazon Web Services S3',
  remoteTypeAzure: 'Azure',
  remoteTypeAzurite: 'Azurite',
  remoteType: 'Type',
  remoteSmbWarningMessage:
    'SMB remotes are meant to work with Windows Server. For other systems (Linux Samba, which means almost all NAS), please use NFS.',
  remoteTestTip: 'Test your remote',
  testRemote: 'Test remote',
  remoteTestFailure: 'Test failed for {name}',
  remoteTestSuccess: 'Test passed for {name}',
  remoteTestError: 'Error',
  remoteTestStep: 'Test step',
  remoteTestName: 'Test name',
  remoteTestNameFailure: 'Remote name already exists!',
  remoteTestSuccessMessage: 'The remote appears to work correctly',
  remoteConnectionFailed: 'Connection failed',
  remoteContainer: 'Container',
  remoteAccountName: 'Account name',

  // ------ Backup job -----

  confirmDeleteBackupJobsTitle: 'Delete backup job{nJobs, plural, one {} other {s}}',
  confirmDeleteBackupJobsBody:
    'Are you sure you want to delete {nJobs, number} backup job{nJobs, plural, one {} other {s}}?',
  mirrorFullBackup: 'Mirror full backup',
  mirrorIncrementalBackup: 'Mirror incremental backup',
  runBackupJob: 'Run backup job once',
  backupJobWarningVmView: 'Enabling or disabling a backup job here will affect all VMs within that job.',
  speedLimit: 'Speed limit (in MiB/s)',
  sourceRemote: 'Source remote',
  targetRemotes: 'Target remotes',

  // ------ Remote -----
  remoteName: 'Name',
  remotePath: 'Path',
  remoteState: 'State',
  remoteDevice: 'Device',
  remoteDisk: 'Disk (Used / Total)',
  remoteSpeed: 'Speed (Write / Read)',
  remoteSpeedInfo: 'Read and write rate speed performed during latest test',
  remoteOptions: 'Options',
  remoteShare: 'Share',
  remoteAuth: 'Auth',
  remoteDeleteTip: 'Delete',
  remoteDeleteSelected: 'Delete selected remotes',
  remoteMyNamePlaceHolder: 'Name',
  remoteLocalPlaceHolderPath: '/path/to/backup',
  remoteNfsPlaceHolderHost: 'Host',
  remoteNfsPlaceHolderPort: 'Port',
  remoteNfsPlaceHolderPath: 'path/to/backup',
  remoteNfsPlaceHolderOptions: 'Custom mount options',
  remoteSmbPlaceHolderRemotePath: 'Subfolder [path\\\\to\\\\backup]',
  remoteSmbPlaceHolderUsername: 'Username',
  remoteSmbPlaceHolderPassword: 'Password',
  remoteSmbPlaceHolderDomain: 'Domain',
  remoteSmbPlaceHolderAddressShare: '<address>\\\\<share>',
  remoteSmbPlaceHolderOptions: 'Custom mount options',
  remoteS3LabelUseHttps: 'Use HTTPS',
  remoteS3LabelAllowInsecure: 'Allow unauthorized',
  remoteS3PlaceHolderEndpoint: 'AWS S3 endpoint (ex: s3.us-east-2.amazonaws.com)',
  remoteS3PlaceHolderBucket: 'AWS S3 bucket name',
  remoteS3PlaceHolderDirectory: 'Directory',
  remoteS3PlaceHolderAccessKeyID: 'Access key ID',
  remoteS3PlaceHolderSecret: 'Paste secret here to change it',
  remoteS3PlaceHolderEncryptionKey: 'Enter your encryption key here (32 characters)',
  remoteS3Region: 'Region, leave blank for default',
  remoteS3TooltipProtocol: 'Uncheck if you want HTTP instead of HTTPS',
  remoteS3TooltipAcceptInsecure: 'Check if you want to accept self signed certificates',
  remoteAzureLabelUseHttps: 'Use HTTPS',
  remoteAzureLabelAllowInsecure: 'Allow unauthorized',
  remoteAzurePlaceHolderEndpoint: 'Azure endpoint (ex: username.blob.core.windows.net)',
  remoteAzurePlaceHolderContainer: 'Azure container name',
  remoteAzurePlaceHolderDirectory: 'Directory',
  remoteAzurePlaceHolderAccessKeyID: 'Access key ID',
  remoteAzurePlaceHolderSecret: 'Paste secret here to change it',
  remoteAzurePlaceHolderEncryptionKey: 'Enter your encryption key here (32 characters)',
  remoteAzureRegion: 'Region, leave blank for default',
  remoteAzureTooltipProtocol: 'Uncheck if you want HTTP instead of HTTPS',
  remoteAzureTooltipAcceptInsecure: 'Check if you want to accept self signed certificates',
  remotePlaceHolderPassword: 'Password(fill to edit)',
  remoteUseVhdDirectory:
    'Store backup as multiple data blocks instead of a whole VHD file. (creates 500-1000 files per backed up GB but allows faster merge)',
  remoteUseVhdDirectoryTooltip:
    'Your remote must be able to handle parallel access (up to 16 write processes per backup) and the number of files (500-1000 files per GB of backed up data)',
  remoteEncryptionBackupSize: 'Size of backup is not updated when using encryption.',
  remoteEncryptionEncryptedfiles:
    'All the files of the remote except the encryption.json are encrypted, that means you can only activate encryption or change key on an empty remote.',
  remoteEncryptionMustUseVhd: 'Delta backup must use VHD saved as blocks',
  remoteEncryptionKey: 'Encrypt all new data sent to this remote',
  remoteEncryptionKeyStorageLocation:
    "You won't be able to get your data back if you lose the encryption key. The encryption key is saved in the XO config backup, they should be secured correctly. Be careful, if you saved it on an encrypted remote, then you won't be able to access it without the remote encryption key.",
  encryption: 'Encryption',
  remoteEncryptionLegacy:
    'A legacy encryption algorithm is used ({algorithm}), please create a new remote with the recommended algorithm {recommendedAlgorithm}',

  // ------ New Storage -----

  newSr: 'New SR',
  newSrConfirm:
    'This will erase the entire disk or partition ({name}) to create a new storage repository. Are you sure you want to continue?',
  newSrExistingSr:
    'SR{n, plural, one {} other {s}} already exist on this device, as noted in the Storage Usage section. Creating this SR may erase the content of {path} and cause the loss of existing SR{n, plural, one {} other {s}}. Are you sure you want to continue?',
  newSrTitle: 'Create a new SR',
  newSrGeneral: 'General',
  newSrTypeSelection: 'Select storage type:',
  newSrSettings: 'Settings',
  newSrUsage: 'Storage usage',
  newSrSummary: 'Summary',
  newSrHost: 'Host',
  newSrType: 'Type',
  newSrName: 'Name',
  newSrDescription: 'Description',
  newSrServer: 'Server',
  newSrPath: 'Path',
  newSrIqn: 'IQN',
  newSrLun: 'LUN',
  newSrNoHba: 'No HBA devices',
  newSrAuth: 'With auth.',
  newSrUsername: 'User name',
  newSrPassword: 'Password',
  newSrDevice: 'Device',
  newSrInUse: 'In use',
  newSrSize: 'Size',
  newSrCreate: 'Create',
  newSrNamePlaceHolder: 'Storage name',
  newSrDescPlaceHolder: 'Storage description',
  newSrIscsiAddressPlaceHolder: 'e.g 93.184.216.34 or iscsi.example.net',
  newSrNfsAddressPlaceHolder: 'e.g 93.184.216.34 or nfs.example.net',
  newSrSmbAddressPlaceHolder: 'e.g \\\\server\\sharename',
  newSrPortPlaceHolder: '[port]',
  newSrUsernamePlaceHolder: 'Username',
  newSrPasswordPlaceHolder: 'Password',
  newSrLvmDevicePlaceHolder: 'Device, e.g /dev/sda…',
  newSrLocalPathPlaceHolder: '/path/to/directory',
  newSrNfsDefaultVersion: 'Default NFS version',
  newSrNfsOptions: 'Comma delimited NFS options',
  newSrNfs: 'NFS version',
  noSharedZfsAvailable: 'No shared ZFS available',
  reattachNewSrTooltip: 'Reattach SR',
  srLocation: 'Storage location',

  // ------ New Network -----
  createNewNetworkNoPermission: 'You do not have permission to create a network',
  createNewNetworkOn: 'Create a new network on {select}',

  // ----- ACLs, Users, Groups ------
  subjectName: 'Users/Groups',
  objectName: 'Object',
  roleName: 'Role',
  aclCreate: 'Create',
  newGroupName: 'New group name',
  createGroup: 'Create group',
  syncLdapGroups: 'Synchronize LDAP groups',
  ldapPluginNotConfigured: 'Install and configure the auth-ldap plugin first',
  syncLdapGroupsWarning:
    'Are you sure you want to synchronize LDAP groups with XO? This may delete XO groups and their ACLs.',
  createGroupButton: 'Create',
  deleteGroup: 'Delete group',
  deleteGroupConfirm: 'Are you sure you want to delete this group?',
  deleteSelectedGroups: 'Delete selected groups',
  deleteGroupsModalTitle: 'Delete group{nGroups, plural, one {} other {s}}',
  deleteGroupsModalMessage:
    'Are you sure you want to delete {nGroups, number} group{nGroups, plural, one {} other {s}}?',
  removeUserFromGroup: 'Remove user from group',
  deleteUserConfirm: 'Are you sure you want to delete this user?',
  deleteUser: 'Delete user',
  deleteSelectedUsers: 'Delete selected users',
  deleteUsersModalTitle: 'Delete user{nUsers, plural, one {} other {s}}',
  deleteUsersModalMessage: 'Are you sure you want to delete {nUsers, number} user{nUsers, plural, one {} other {s}}?',
  noUser: 'No user',
  unknownUser: 'Unknown user',
  noGroupFound: 'No group found',
  groupNameColumn: 'Name',
  groupUsersColumn: 'Users',
  addUserToGroupColumn: 'Add user',
  userNameColumn: 'Username',
  userGroupsColumn: 'Member of',
  userCountGroups: '{nGroups, number} group{nGroups, plural, one {} other {s}}',
  userPermissionColumn: 'Permissions',
  userAuthColumn: 'Password / Authentication methods',
  userName: 'Username',
  userPassword: 'Password',
  createUserButton: 'Create',
  noUserFound: 'No user found',
  userLabel: 'User',
  adminLabel: 'Admin',
  noUserInGroup: 'No user in group',
  countUsers: '{users, number} user{users, plural, one {} other {s}}',
  selectPermission: 'Select permission',
  deleteAcl: 'Delete ACL',
  deleteSelectedAcls: 'Delete selected ACLs',
  deleteAclsModalTitle: 'Delete ACL{nAcls, plural, one {} other {s}}',
  deleteAclsModalMessage: 'Are you sure you want to delete {nAcls, number} ACL{nAcls, plural, one {} other {s}}?',

  // ----- Plugins ------
  noPlugins: 'No plugins found',
  autoloadPlugin: 'Auto-load at server start',
  savePluginConfiguration: 'Save configuration',
  deletePluginConfiguration: 'Delete configuration',
  pluginConfirmation: 'The test appears to be working.',
  pluginError: 'Plugin error',
  pluginTest: 'Plugin test',
  unknownPluginError: 'Unknown error',
  purgePluginConfiguration: 'Purge plugin configuration',
  purgePluginConfigurationQuestion: 'Are you sure you want to purge this configuration?',
  cancelPluginEdition: 'Cancel',
  pluginConfigurationSuccess: 'Plugin configuration',
  pluginConfigurationChanges: 'Plugin configuration successfully saved!',
  pluginConfigurationPresetTitle: 'Predefined configuration',
  pluginConfigurationChoosePreset: 'Choose a predefined configuration.',
  applyPluginPreset: 'Apply',
  disabledTestPluginTootltip: 'This plugin is not loaded',

  // ----- User preferences -----
  saveNewUserFilterErrorTitle: 'Save filter error',
  saveNewUserFilterErrorBody: 'Bad parameter: name must be given.',
  filterName: 'Name:',
  filterValue: 'Value:',
  saveNewFilterTitle: 'Save new filter',
  removeUserFilterTitle: 'Remove custom filter',
  removeUserFilterBody: 'Are you sure you want to remove the custom filter?',
  defaultFilter: 'Default filter',
  defaultFilters: 'Default filters',
  customFilters: 'Custom filters',
  customizeFilters: 'Customize filters',

  // ----- VM actions ------
  cantInterPoolCopy: 'Interpool copy requires at least Enterprise plan',
  copyExportedUrl: 'Copy the export URL of the VM',
  downloadVm: 'Download VM',
  startVmLabel: 'Start',
  startVmOnLabel: 'Start on…',
  startVmOnMissingHostTitle: 'No host selected',
  startVmOnMissingHostMessage: 'You must select a host',
  recoveryModeLabel: 'Recovery start',
  suspendVmLabel: 'Suspend',
  pauseVmLabel: 'Pause',
  stopVmLabel: 'Stop',
  forceShutdownVmLabel: 'Force shutdown',
  rebootVmLabel: 'Reboot',
  forceRebootVmLabel: 'Force reboot',
  deleteVmLabel: 'Delete',
  deleteSelectedVmsLabel: 'Delete selected VMs',
  migrateVmLabel: 'Migrate',
  snapshotVmLabel: 'Snapshot',
  exportVmLabel: 'Export',
  resumeVmLabel: 'Resume',
  copyVmLabel: 'Copy',
  cloneVmLabel: 'Clone',
  cleanVm: 'Clean VM directory',
  fastCloneVmLabel: 'Fast clone',
  startMigratedVm: 'Start the migrated VM',
  vmConsoleLabel: 'Console',
  vmExportUrlValidity: 'The URL is valid once for a short period of time.',
  vmWarmMigration: 'Warm migration',
  vmWarmMigrationProcessInfo:
    'Warm migration process will first create a copy of the VM on the destination while the source VM is still running, then shutdown the source VM and send the changes that happened during the migration to the destination to minimize downtime.',
  backupLabel: 'Backup',

  // ----- SR general tab -----
  baseCopyTooltip: '{n, number} base cop{n, plural, one {y} other {ies}} ({usage})',
  diskTooltip: '{name} ({usage})',
  snapshotsTooltip: '{n, number} snapshot{n, plural, one {} other {s}} ({usage})',
  vdiOnVmTooltip: '{name} ({usage}) on {vmName}',
  vdisTooltip: '{n, number} VDI{n, plural, one {} other {s}} ({usage})',

  // ----- SR advanced tab -----

  provisioning: 'Provisioning',
  supportedImageFormats: 'Supported image formats',
  srUnhealthyVdiDepth: 'Depth',
  srUnhealthyVdiNameLabel: 'Name',
  srUnhealthyVdiSize: 'Size',
  srUnhealthyVdiTitle: 'VDI to coalesce ({total, number})',
  srUnhealthyVdiUuid: 'UUID',

  // ----- SR stats tab -----

  srNoStats: 'No stats',
  statsIops: 'IOPS',
  statsIoThroughput: 'IO throughput',
  statsLatency: 'Latency',
  statsIowait: 'IOwait',

  // ----- SR actions -----
  srRescan: 'Rescan all disks',
  srReconnectAll: 'Connect to all hosts',
  srDisconnectAll: 'Disconnect from all hosts',
  srForget: 'Forget this SR',
  srsForget: 'Forget SRs',
  nSrsForget: 'Forget {nSrs, number} SR{nSrs, plural, one {} other{s}}',
  srRemoveButton: 'Remove this SR',
  srNoVdis: 'No VDIs in this storage',
  srReclaimSpace: 'Reclaim freed space',
  srReclaimSpaceConfirm: 'Are you sure you want to reclaim freed space on this SR?',
  srReclaimSpaceNotSupported: 'Space reclaim not supported. Only supported on block based/LVM based SRs.',

  // ----- SR disks tab -----
  isMetadataVdi: 'This snapshot has been purged of its data. It only contains the metadata and changed blocks.',
  multipleActiveVdis: '{firstVdi} and {nVdis} more',
  noActiveVdi: 'No active VDI',

  // ----- Pool general -----
  earliestExpirationDate: 'Earliest expiration: {dateString}',
  poolNoSupport: 'No XCP-ng Pro support enabled on this pool',
  poolPartialSupport:
    'Only {nHostsLicense, number} host{nHostsLicense, plural, one {} other {s}} under license on {nHosts, number} host{nHosts, plural, one {} other {s}}. This means this pool is not supported at all until you license all its hosts.',
  poolTitleRamUsage: 'Pool RAM usage:',
  poolRamUsage: '{used} used of {total} ({free} free)',
  poolMaster: 'Master:',
  displayAllHosts: 'Display all hosts of this pool',
  displayAllStorages: 'Display all storage for this pool',
  displayAllVMs: 'Display all VMs of this pool',
  licenseRestrictions: 'License restrictions',
  licenseRestrictionsModalTitle: 'Warning: You are using a Free XenServer license',
  actionsRestricted: 'Some functionality is restricted.',
  counterRestrictionsOptions: 'You can:',
  counterRestrictionsOptionsXcp: 'upgrade to XCP-ng for free to get rid of these restrictions',
  counterRestrictionsOptionsXsLicense: 'or get a commercial Citrix license',
  // ----- Pool tabs -----
  hostsTabName: 'Hosts',
  vmsTabName: 'VMs',
  srsTabName: 'SRs',
  // ----- Pool advanced tab -----
  backupNetwork: 'Backup network',
  crashDumpSr: 'Crash dump SR',
  defaultMigrationNetwork: 'Default migration network',
  migrationCompression: 'Migration compression',
  migrationCompressionDisabled: 'Migration compression is not available on this pool',
  poolDisableHa: 'Disabling high availability',
  poolDisableHaConfirm: 'Are you sure you want to disable high availability on this pool?',
  poolEnableHa: 'Enabling high availability',
  poolEditAll: 'Edit all',
  poolHaSelectSrs: 'Select heartbeat SR candidates',
  poolHaSelectSrsDetails: 'The XAPI will pick one of these SR as heartbeat SR',
  poolHaEnabled: 'Enabled',
  poolHaDisabled: 'Disabled',
  poolHaStatus: 'High Availability',
  poolHeartbeatSr: 'Heartbeat SR',
  poolGpuGroups: 'GPU groups',
  poolRemoteSyslogPlaceHolder: 'Logging host',
  poolSupportSourceUsers: 'XCP-ng Pro Support not available for source users',
  poolSupportXcpngOnly: 'Only available for pool of XCP-ng hosts',
  poolLicenseAlreadyFullySupported: 'The pool is already fully supported',
  rollingPoolReboot: 'Rolling Pool Reboot',
  rollingPoolRebootHaWarning: 'High Availability is enabled. This will automatically disable it during the reboot.',
  rollingPoolRebootLoadBalancerWarning:
    'Load Balancer plugin is running. This will automatically pause it during the reboot.',
  rollingPoolRebootMessage:
    'Are you sure you want to start a Rolling Pool Reboot? Running VMs will be migrated back and forth and this can take a while. Scheduled backups that may concern this pool will be disabled.',

  setpoolMaster: 'Master',
  syslogRemoteHost: 'Remote syslog host',
  syncNetbox: 'Synchronize with Netbox',
  syncNetboxWarning: 'Are you sure you want to synchronize with Netbox?',
  updateMissingNetwork: '{networkID} not found, please select a new one',
  // ----- Pool host tab -----
  hostNameLabel: 'Name',
  hostDescription: 'Description',
  noHost: 'No hosts',
  memoryLeftTooltip: '{used}% used ({free} free)',
  // ----- Pool network tab -----
  bondMode: 'Bond Mode',
  pif: 'PIF',
  poolNetworkAutomatic: 'Automatic',
  poolNetworkNameLabel: 'Name',
  poolNetworkDescription: 'Description',
  poolNetworkPif: 'PIFs',
  privateNetworks: 'Private networks',
  manage: 'Manage',
  poolNoNetwork: 'No networks',
  poolNetworkMTU: 'MTU',
  poolNetworkPifAttached: 'Connected',
  poolNetworkPifDetached: 'Disconnected',
  showPifs: 'Show PIFs',
  hidePifs: 'Hide PIFs',
  networkAutomaticTooltip: 'Network(s) selected by default for new VMs',
  noNbdConnection: 'No NBD Connection',
  nbdConnection: 'NBD Connection',
  insecureNbdConnection: 'Insecure NBD Connection (not allowed through XO)',
  // ----- Pool patches tab -----
  multiHostPoolUpdate: "Rolling pool update can only work when there's multiple hosts in a pool with a shared storage",
  nVmsRunningOnLocalStorage:
    '{nVms, number} VM{nVms, plural, one {} other {s}} {nVms, plural, one {is} other {are}} currently running and using at least one local storage. A shared storage for all your VMs is needed to start a rolling pool update',
  // ----- Pool stats tab -----
  poolNoStats: 'No stats',
  poolAllHosts: 'All hosts',
  // ----- Pool actions ------
  addSrLabel: 'Add SR',
  addVmLabel: 'Add VM',
  addHostsLabel: 'Add hosts',
  clickLinkForDetails: 'Follow this link for more details',
  missingPatchesPool:
    'The pool needs to install {nMissingPatches, number} patch{nMissingPatches, plural, one {} other {es}}. This operation may take a while.',
  missingPatchesHost:
    'The selected host{nHosts, plural, one {} other {s}} need{nHosts, plural, one {s} other {}} to install {nMissingPatches, number} patch{nMissingPatches, plural, one {} other {es}}. This operation may take a while.',
  patchUpdateNoInstall:
    'The selected host{nHosts, plural, one {} other {s}} cannot be added to the pool because the patches are not homogeneous.',
  addHostsErrorTitle: 'Adding host{nHosts, plural, one {} other {s}} failed',
  addHostNotHomogeneousErrorMessage: 'Host patches could not be homogenized.',
  disconnectServer: 'Disconnect',

  // ----- Host item ------
  host: 'Host',
  hostHvmDisabled: 'Hardware-assisted virtualization is not enabled on this host',
  hostNoLicensePartialProSupport:
    'This host does not have an active license, even though it is in a pool with licensed hosts. In order for XCP-ng Pro Support to be enabled on a pool, all hosts within the pool must have an active license',
  hostNoSupport: 'No XCP-ng Pro Support enabled on this host',
  hostSupportEnabled: 'XCP-ng Pro Support enabled on this host',
  noMoreMaintained: 'This host version is no longer maintained',
  pubKeyTooShort: 'TLS key is too small to update host to XCP-ng 8.3',
  longerCustomCertficate:
    'If your certificate is custom, you need to install a new one with a key length of 2048 or greater.',
  longerDefaultCertificate:
    'If your certificate is the default self-signed certificate from host installation, you need to re-generate it from XCP-ng 8.2.1.',

  // ----- Host actions ------
  disableMaintenanceMode: 'Disable maintenance mode',
  enableMaintenanceMode: 'Enable maintenance mode',
  slaveHostMoreUpToDateThanMasterAfterRestart:
    'It appears that this host will be more up-to-date than the master ({master}) after the restart. This will result in the slave being unable to contact the pool master. Please update and restart your master node first.',
  startHostLabel: 'Start',
  stopHostLabel: 'Stop',
  enableHostLabel: 'Enable',
  disableHostLabel: 'Disable',
  restartHostAgent: 'Restart toolstack',
  smartRebootBypassCurrentVmCheck:
    'As the XOA is hosted on the host that is scheduled for a reboot, it will also be restarted. Consequently, XO won\'t be able to resume VMs, and VMs with the "Protect from accidental shutdown" option enabled will not have this option reactivated automatically.',
  smartRebootHostLabel: 'Smart reboot',
  smartRebootHostTooltip: 'Suspend resident VMs, reboot host and resume VMs automatically',
  forceRebootHostLabel: 'Force reboot',
  forceSmartRebootHost:
    'Smart Reboot failed because {nVms, number} VM{nVms, plural, one {} other {s}} ha{nVms, plural, one {s} other {ve}} {nVms, plural, one {its} other {their}} Suspend operation blocked. Would you like to force?',
  restartAnyway: 'Restart anyway',
  rebootHostLabel: 'Reboot',
  noHostsAvailableErrorTitle: 'Error while restarting host',
  noHostsAvailableErrorMessage:
    'Some VMs cannot be migrated without first rebooting this host. Please try force reboot.',
  failHostBulkRestartTitle: 'Error while restarting hosts',
  failHostBulkRestartMessage:
    '{failedHosts, number}/{totalHosts, number} host{failedHosts, plural, one {} other {s}} could not be restarted.',
  rebootUpdateHostLabel: 'Reboot to apply updates',
  emergencyModeLabel: 'Emergency mode',
  // ----- Host tabs -----
  storageTabName: 'Storage',
  patchesTabName: 'Patches',
  // ----- host stat tab -----
  statLoad: 'Load average',
  // ----- host advanced tab -----
  applyChangeOnPcis:
    'This operation will reboot the host in order to apply the change on the PCI{nPcis, plural, one {} other {s}}. Are you sure you want to continue?',
  className: 'Class name',
  confirmForceRebootHost: 'Force reboot?',
  deviceName: 'Device name',
  enabled: 'Enabled',
  disksSystemHealthy: 'All disks are healthy ✅',
  editHostIscsiIqnTitle: 'Edit iSCSI IQN',
  editHostIscsiIqnMessage:
    'Are you sure you want to edit the iSCSI IQN? This may result in failures connecting to existing SRs if the host is attached to iSCSI SRs.',
  hostTitleRamUsage: 'Host RAM usage:',
  hostEvacuationFailed: 'The host evacuation failed, do you want to force reboot?',
  maintenanceHostModalMessage:
    'Are you sure you want to enter maintenance mode? This will migrate all the VMs running on this host to other hosts of the pool.',
  maintenanceHostModalTitle: 'Maintenance mode',
  maintenanceHostTooltip: 'Evacuate and disable the host',
  memoryHostState: 'RAM: {memoryUsed} used of {memoryTotal} ({memoryFree} free)',
  hardwareHostSettingsLabel: 'Hardware',
  hyperThreading: 'Hyper-threading (SMT)',
  hyperThreadingNotAvailable: 'HT detection is only available on XCP-ng 7.6 and higher',
  hostDownloadLogs: 'Download system logs',
  hostDownloadLogsContainEntireHostLogs:
    "The logs you are about to download contain the entire host's logs, potentially hundreds of megabytes. Please note that these logs can be technical and complex to analyze, requiring some expertise.",
  hostAddress: 'Address',
  hostStatus: 'Status',
  hostBuildNumber: 'Build number',
  hostIscsiIqn: 'iSCSI IQN',
  hostIommuTooltip: 'PCI passthrough capable',
  hostNoIscsiSr: 'Not connected to an iSCSI SR',
  hostMultipathingSrs: 'Click to see concerned SRs',
  hostMultipathingPaths: '{nActives, number} of {nPaths, number} path{nPaths, plural, one {} other {s}}',
  hostMultipathingRequiredState:
    'This action will not be fulfilled if a VM is in a running state. Please ensure that all VMs are evacuated or stopped before performing this action!',
  hostMultipathingWarning:
    'The host{nHosts, plural, one {} other {s}} will lose their connection to the SRs. Do you want to continue?',
  hostXenServerVersion: 'Version',
  hostStatusEnabled: 'Enabled',
  hostStatusDisabled: 'Disabled',
  hostPowerOnMode: 'Power on mode',
  hostControlDomainMemory: 'Control domain memory',
  setControlDomainMemory: 'Set control domain memory',
  setControlDomainMemoryMessage:
    'Editing the control domain memory will immediately restart the host in order to apply the changes.',
  maintenanceModeRequired: 'The host needs to be in maintenance mode',
  hostStartedSince: 'Host uptime',
  hostStackStartedSince: 'Toolstack uptime',
  hostCpusModel: 'CPU model',
  hostGpus: 'GPUs',
  hostCpusNumber: 'Core (socket)',
  hostManufacturerinfo: 'Manufacturer info',
  hostBiosinfo: 'BIOS info',
  licenseHostSettingsLabel: 'License',
  hostLicenseType: 'Type',
  hostLicenseSocket: 'Socket',
  hostLicenseExpiry: 'Expiry',
  hostRemoteSyslog: 'Remote syslog',
  hostIommu: 'IOMMU',
  hostNoCertificateInstalled: 'No certificates installed on this host',
  'onlyAvailableXcp8.3OrHigher': 'Only available for XCP-ng 8.3.0 or higher',
  installRaidPlugin: 'To display RAID info, install raid.py plugin',
  noRaidInformationAvailable: 'No RAID information available',
  pciDevices: 'PCI Devices',
  pciId: 'PCI ID',
  pcisEnable: 'PCI{nPcis, plural, one {} other {s}} enable',
  pcisDisable: 'PCI{nPcis, plural, one {} other {s}} disable',
  passthroughEnabled: 'Passthrough enabled',
  pusbDevices: 'PUSB Devices',
  smartctlPluginNotInstalled: 'Smartctl plugin not installed',
  supplementalPacks: 'Installed supplemental packs',
  supplementalPackNew: 'Install new supplemental pack',
  supplementalPackPoolNew: 'Install supplemental pack on every host',
  supplementalPackTitle: '{name} (by {author})',
  supplementalPackInstallStartedTitle: 'Installation started',
  supplementalPackInstallStartedMessage: 'Installing new supplemental pack…',
  supplementalPackInstallErrorTitle: 'Installation error',
  supplementalPackInstallErrorMessage: 'The installation of the supplemental pack failed.',
  supplementalPackInstallSuccessTitle: 'Installation success',
  supplementalPackInstallSuccessMessage: 'Supplemental pack successfully installed.',
  systemDisksHealth: 'System disks health',
  raidHealthy: 'All mdadm RAID are healthy ✅',
  raidStateWarning: 'RAID state needs your attention: {state}',
  raidStatus: 'RAID Status',
  uniqueHostIscsiIqnInfo: 'The iSCSI IQN must be unique. ',
  vendorId: 'Vendor ID',
  // ----- Host net tabs -----
  networkCreateButton: 'Add a network',
  pifDeviceLabel: 'Device',
  pifNetworkLabel: 'Network',
  pifVlanLabel: 'VLAN',
  pifAddressLabel: 'Address',
  pifModeLabel: 'Mode',
  pifMacLabel: 'MAC',
  pifMtuLabel: 'MTU',
  pifSpeedLabel: 'Speed',
  pifStatusLabel: 'Status',
  pifInUse: 'This interface is currently in use',
  defaultLockingMode: 'Default locking mode',
  pifConfigureIp: 'Configure IP address',
  configIpErrorTitle: 'Invalid parameters',
  staticIp: 'Static IP address',
  staticIpv6: 'Static IPv6 address',
  netmask: 'Netmask',
  dns: 'DNS',
  gateway: 'Gateway',
  ipRequired: 'An IP address is required',
  netmaskRequired: 'Netmask required',
  // ----- Host storage tabs -----
  addSrDeviceButton: 'Add a storage',
  srType: 'Type',
  pbdDetails: 'PBD details',
  pbdStatus: 'Status',
  pbdStatusConnected: 'Connected',
  pbdStatusDisconnected: 'Disconnected',
  pbdConnect: 'Connect',
  pbdDisconnect: 'Disconnect',
  pbdForget: 'Forget',
  srShared: 'Shared',
  srNotShared: 'Not shared',
  pbdNoSr: 'No storage detected',
  // ----- Host patch tabs -----
  patchNameLabel: 'Name',
  patchUpdateButton: 'Install all patches',
  patchDescription: 'Description',
  patchVersion: 'Version',
  patchApplied: 'Applied date',
  patchSize: 'Size',
  patchNothing: 'No patches detected',
  patchReleaseDate: 'Release date',
  patchGuidance: 'Guidance',
  hostAppliedPatches: 'Applied patches',
  hostMissingPatches: 'Missing patches',
  hostUpToDate: 'Host up-to-date!',
  installAllPatchesTitle: 'Install all patches',
  installAllPatchesContent: 'To install all patches go to pool.',
  installAllPatchesRedirect: 'Go to pool',
  installAllPatchesOnHostContent:
    'The pool master must always be updated FIRST. Updating will automatically restart the toolstack. Running VMs will not be affected. Are you sure you want to continue and install all patches on this host?',
  patchRelease: 'Release',
  updatePluginNotInstalled:
    'An error occurred while fetching the patches. Please make sure the updater plugin is installed by running `yum install xcp-ng-updater` on the host.',
  showChangelog: 'Show changelog',
  changelog: 'Changelog',
  changelogPatch: 'Patch',
  changelogAuthor: 'Author',
  changelogDate: 'Date',
  changelogDescription: 'Description',
  // ----- Pool patch tabs -----
  install: 'Install',
  installPatchesTitle: 'Install patch{nPatches, plural, one {} other {es}}',
  installPatchesContent:
    'This will automatically restart the toolstack on every host. Running VMs will not be affected. Are you sure you want to continue and install {nPatches, number} patch{nPatches, plural, one {} other {es}}?',
  installPoolPatches: 'Install pool patches',
  confirmPoolPatch:
    'This will automatically restart the toolstack on every host. Running VMs will not be affected. Are you sure you want to continue and install all the patches on this pool?',
  rollingPoolUpdate: 'Rolling pool update',
  rollingPoolUpdateMessage:
    'Are you sure you want to start a rolling pool update? Running VMs will be migrated back and forth and this can take a while. Scheduled backups that may concern this pool will be disabled.',
  rollingPoolUpdateHaWarning: 'High Availability is enabled. This will automatically disable it during the update.',
  rollingPoolUpdateLoadBalancerWarning:
    'Load Balancer plugin is running. This will automatically pause it during the update.',
  poolNeedsDefaultSr: 'The pool needs a default SR to install the patches.',
  vmsHaveCds: '{nVms, number} VM{nVms, plural, one {} other {s}} {nVms, plural, one {has} other {have}} CDs',
  ejectCds: 'Eject CDs',
  highAvailabilityNotDisabledTooltip: 'High Availability must be disabled',
  xsCredentialsMissing:
    'In order to install XenServer updates, you first need to configure your XenServer Client ID. See {link}.',
  xsCredentialsMissingShort: 'Missing XenServer Client ID',

  // ----- Pool storage tabs -----
  defaultSr: 'Default SR',
  setAsDefaultSr: 'Set as default SR',
  setDefaultSr: 'Set default SR:',

  // ----- VM tabs -----
  generalTabName: 'General',
  statsTabName: 'Stats',
  consoleTabName: 'Console',
  containersTabName: 'Container',
  snapshotsTabName: 'Snapshots',
  logsTabName: 'Logs',
  advancedTabName: 'Advanced',
  networkTabName: 'Network',
  disksTabName: 'Disk{disks, plural, one {} other {s}}',

  powerStateHalted: 'Halted',
  powerStateRunning: 'Running',
  powerStateSuspended: 'Suspended',
  powerStatePaused: 'Paused',
  powerStateDisabled: 'Disabled',
  powerStateBusy: 'Busy',

  // ----- VM home -----
  vmCurrentStatus: 'Current status:',
  vmNotRunning: 'Not running',
  vmHaltedSince: 'Halted {ago}',

  // ----- VM general tab -----
  availableForUefiOnly: 'This feature is only available for UEFI VMs.',
  noToolsDetected: 'No Xen tools detected',
  managementAgentDetected: 'Management agent {version} detected',
  managementAgentOutOfDate: 'Management agent {version} out of date',
  managementAgentNotDetected: 'Management agent not detected',
  noIpv4Record: 'No IPv4 record',
  noIpRecord: 'No IP record',
  secureBootEnforced: 'Secure boot enforced',
  secureBootNotEnforced: 'Secure boot not enforced',
  secureBootNoDbx: 'Secure boot enforced, but no dbx present',
  secureBootStatus: 'Secure boot status',
  secureBootWantedButCertificatesMissing: 'Secure boot wanted, but some EFI certificates are missing',
  secureBootWantedButDisabled: 'Secure boot wanted, but disabled due to the VM being in UEFI setup mode',
  secureBootWantedPendingBoot: 'Secure boot wanted, pending first boot',
  started: 'Started {ago}',
  paraVirtualizedMode: 'Paravirtualization (PV)',
  hardwareVirtualizedMode: 'Hardware virtualization (HVM)',
  hvmModeWithPvDriversEnabled: 'Hardware virtualization with paravirtualization drivers enabled (PVHVM)',
  pvInPvhMode: 'PV inside a PVH container (PV in PVH)',
  vmCreatedAdmin: 'Created by {user}\non {date}\nwith template {template}',
  vmCreatedNonAdmin: 'Created on {date}\nwith template {template}',
  windowsUpdateTools: 'Manage Citrix PV drivers via Windows Update',
  windowsToolsModalTitle: 'Windows Update Tools',
  windowsToolsModalMessage:
    'Enabling this will allow the VM to automatically install Citrix PV drivers from Windows Update. This only includes drivers, the Citrix management agent must still be separately installed.',
  windowsToolsModalWarning:
    'If you have previously installed XCP-ng tools instead of Citrix tools, this option will break your VM.',
  editVmNotes: 'Edit VM notes',
  supportsMarkdown: 'Supports Markdown syntax',
  vmNotesTooLong: 'VM notes cannot be longer than 2048 characters',

  // ----- VM stat tab -----
  statsCpu: 'CPU usage',
  statsMemory: 'Memory usage',
  statsNetwork: 'Network throughput',
  useStackedValuesOnStats: 'Stacked values',
  statDisk: 'Disk throughput',
  statLastTenMinutes: 'Last 10 minutes',
  statLastTwoHours: 'Last 2 hours',
  statLastDay: 'Last day',
  statLastWeek: 'Last week',
  statLastYear: 'Last year',

  // ----- VM console tab -----
  copyToClipboardLabel: 'Copy',
  ctrlAltDelButtonLabel: 'Ctrl+Alt+Del',
  ctrlAltDelConfirmation: 'Send Ctrl+Alt+Del to VM?',
  disabledConsole: 'Console is disabled for this VM',
  multilineCopyToClipboard: 'Multiline copy',
  tipLabel: 'Tip:',
  hideHeaderTooltip: 'Hide info',
  showHeaderTooltip: 'Show info',
  sendToClipboard: 'Send to clipboard',
  sshRootTooltip: 'Connect using external SSH tool as root',
  sshRootLabel: 'SSH',
  sshUserTooltip: 'Connect using external SSH tool as user…',
  sshUserLabel: 'SSH as…',
  sshUsernameLabel: 'SSH user name',
  remoteNeedClientTools: 'No IP address reported by client tools',
  rdp: 'RDP',
  rdpRootTooltip: 'Connect using external RDP tool',

  // ----- VM container tab -----
  containerName: 'Name',
  containerCommand: 'Command',
  containerCreated: 'Creation date',
  containerStatus: 'Status',
  containerAction: 'Action',
  noContainers: 'No existing containers',
  containerStop: 'Stop this container',
  containerStart: 'Start this container',
  containerPause: 'Pause this container',
  containerResume: 'Resume this container',
  containerRestart: 'Restart this container',

  // ----- VM disk tab -----
  rescanIsoSrs: 'Rescan all ISO SRs',
  vbdCreateDeviceButton: 'New disk',
  vdiAttachDevice: 'Attach disk',
  vdiAttachDeviceConfirm: 'The selected VDI is already attached to this VM. Are you sure you want to continue?',
  vdiBootOrder: 'Boot order',
  vdiNameLabel: 'Name',
  vdiNameDescription: 'Description',
  vdiPool: 'Pool',
  vdiTags: 'Tags',
  vdiTasks: 'VDI tasks',
  vdiSize: 'Size',
  vdiImageFormat: 'Image format',
  vdiSr: 'SR',
  vdiVms: 'VMs',
  vdiMigrate: 'Migrate VDI',
  vdiMigrateSelectSr: 'Destination SR:',
  vdiMigrateNoSr: 'No SR',
  vdiMigrateNoSrMessage: 'A target SR is required to migrate a VDI',
  vdiForget: 'Forget',
  noControlDomainVdis: 'No VDIs attached to control domain',
  vbdBootableStatus: 'Boot flag',
  vbdDevice: 'Device',
  vbdCbt: 'CBT',
  vbdStatus: 'Status',
  vbdStatusConnected: 'Connected',
  vbdStatusDisconnected: 'Disconnected',
  vbdConnect: 'Connect VBD',
  vbdDisconnect: 'Disconnect VBD',
  vbdBootable: 'Bootable',
  vbdReadonly: 'Readonly',
  vbdCreate: 'Create',
  vbdAttach: 'Attach',
  vbdNamePlaceHolder: 'Disk name',
  vbdSizePlaceHolder: 'Size',
  cdDriveNotInstalled: 'CD drive not completely installed',
  cdDriveInstallation: 'Stop and start the VM to install the CD drive',
  saveBootOption: 'Save',
  resetBootOption: 'Reset',
  destroySelectedVdis: 'Destroy selected VDIs',
  destroyVdi: 'Destroy VDI',
  exportVdi: 'Export VDI content',
  format: 'Format',
  importVdi: 'Import VDI content',
  importVdiNoFile: 'No file selected',
  selectVdiMessage: 'Drop VHD file here',
  useQuotaWarning:
    'Creating this disk will use the disk space quota from the resource set {resourceSet} ({spaceLeft} left)',
  notEnoughSpaceInResourceSet: 'Not enough space in resource set {resourceSet} ({spaceLeft} left)',
  warningVdiSr: "The VDIs' SRs must either be shared or on the same host for the VM to be able to start.",
  removeSelectedVdisFromVm: 'Remove selected VDIs from this VM',
  removeVdiFromVm: 'Remove VDI from this VM',
  qcow2: 'QCOW2',
  vhd: 'VHD',
  vmdk: 'VMDK',
  raw: 'RAW',

  // ----- VM network tab -----

  editVifLockingMode: 'Edit locking mode',
  aclRuleAllow: 'Allow the traffic',
  aclRuleProtocol: 'Select a protocol',
  aclRulePort: 'Select a port',
  aclRuleIpRange: 'Select an IP or an IP range (CIDR format)',
  aclRuleDirection: 'Select a direction',
  aclRuleAllowField: 'Traffic Enabled/Disabled',
  aclRuleProtocolField: 'Protocol',
  aclRulePortField: 'Port',
  aclRuleIpRangeField: 'IP range (CIDR format)',
  aclRuleDirectionField: 'Direction',
  addRule: 'Add rule',
  deleteRule: 'Delete rule',
  hideRules: 'Hide rules',
  sdnControllerNotLoaded: 'SDN Controller must be loaded',
  showRules: 'Show rules',
  vifAclRules: 'Traffic rules',
  vifCreateDeviceButton: 'New device',
  vifDeviceLabel: 'Device',
  vifMacLabel: 'MAC address',
  vifMtuLabel: 'MTU',
  vifNetworkLabel: 'Network',
  vifRateLimitLabel: 'Rate limit (kB/s)',
  vifStatusLabel: 'Status',
  vifStatusConnected: 'Connected',
  vifStatusDisconnected: 'Disconnected',
  vifConnect: 'Connect',
  vifDisconnect: 'Disconnect',
  vifRemove: 'Remove',
  vifsRemove: 'Remove selected VIFs',
  vifIpAddresses: 'IP addresses',
  vifMacAutoGenerate: 'Auto-generated if empty',
  vifAllowedIps: 'Allowed IPs',
  selectIpFromIpPool: 'Select an IP',
  enterIp: 'Enter an IP',
  addAllowedIp: 'Add allowed IP',
  addIpError: 'Error while adding allowed IP',
  invalidIp: 'Invalid IP',
  vifNoIps: 'No IPs',
  vifLockingModeDisabled: 'VIF locking mode is disabled',
  vifLockingModeUnlocked: 'VIF locking mode is unlocked',
  vifLockingModeLocked: 'VIF locking mode is locked',
  networkDefaultLockingModeDisabled: 'Network default locking mode is disabled',
  networkDefaultLockingModeUnlocked: 'Network default locking mode is unlocked',
  vifLockedNetworkNoIps: 'Network locked and no IPs are allowed for this interface',
  vifUnlockedNetworkWithIps: 'Some IPs are unnecessarily set as allowed for this interface',
  vifUnknownNetwork: 'Unknown network',
  vifCreate: 'Create',
  nbd: 'NBD',
  nbdTootltip: 'Network Block Device status',
  nbdInsecureTooltip: 'Use of insecure NBD is not advised',
  nbdSecureTooltip: 'Nbd connection is secure and ready',

  // ----- VM snapshot tab -----
  noSnapshots: 'No snapshots',
  newSnapshotWithMemory: 'New snapshot with memory',
  newSnapshotWithMemoryConfirm:
    'Are you sure you want to create a snapshot with memory? This could take a while and the VM will be unusable during that time.',
  snapshotMemorySaved: 'Memory saved',
  snapshotCreateButton: 'New snapshot',
  tipCreateSnapshotLabel: 'Just click on the snapshot button to create one!',
  revertSnapshot: 'Revert VM to this snapshot',
  deleteSnapshot: 'Remove this snapshot',
  deleteSnapshots: 'Remove selected snapshots',
  copySnapshot: 'Create a VM from this snapshot',
  exportSnapshot: 'Export this snapshot',
  exportSnapshotMemory: 'Export snapshot memory',
  secureBoot: 'Secure boot',
  snapshotDate: 'Creation date',
  snapshotError: 'Snapshot error',
  snapshotName: 'Name',
  snapshotDescription: 'Description',
  snapshotQuiesce: 'Quiesced snapshot',
  vmRevertSuccessfulTitle: 'Revert successful',
  vmRevertSuccessfulMessage: 'VM successfully reverted',
  currentSnapshot: 'Current snapshot',

  // ----- VM backup tab -----
  goToBackupPage: 'Go to the backup page.',

  // ----- VM log tab -----
  logRemoveAll: 'Remove all logs',
  noLogs: 'No logs so far',
  logDate: 'Creation date',
  logName: 'Name',
  logContent: 'Content',
  logAction: 'Action',

  // ----- VM advanced tab -----
  addXenStoreEntry: 'Add new XenStore entry',
  attachedPcis: 'Attached PCIs',
  attachingDetachingPciNeedVmBoot: 'Attaching/detaching a PCI will be taken into consideration for the next VM boot.',
  attachPcis: 'Attach PCIs',
  createVtpm: 'Create a VTPM',
  deleteEntryDeleteValue: 'To delete an entry, simply delete its value',
  deleteVtpm: 'Delete the VTPM',
  deleteVtpmWarning:
    'If the VTPM is in use, removing it will result in a dangerous data loss. Are you sure you want to remove the VTPM?',
  infoUnknownPciOnNonRunningVm:
    "When a VM is offline, it's not attached to any host, and therefore, it's impossible to determine the associated PCI devices, as it depends on the hardware environment in which it would be deployed.",
  coalesceLeaf: 'Coalesce leaf',
  coalesceLeafSuccess: 'Coalesce leaf success',
  coalesceLeafSuspendVm: 'This will suspend the VM during the operation. Do you want to continue?',
  noSecureBoot: 'This pool was not setup for Guest UEFI SecureBoot yet',
  propagateCertificatesTitle: 'Propagate certificates',
  propagateCertificatesConfirm:
    "This will overwrite the VM's UEFI certificates with certificates defined at the pool level. Continue?",
  propagateCertificates: "Copy the pool's default UEFI certificates to the VM",
  propagateCertificatesSuccessful: 'Certificates propagated successfully',
  poolAutoPoweronDisabled: 'Auto power on is disabled at pool level, click to fix automatically.',
  rebootRequiredAfterXenStoreChanges: 'A reboot is required after any XenStore changes',
  vmRemoveButton: 'Remove',
  vmConvertToTemplateButton: 'Convert to template',
  vmSwitchVirtualizationMode: 'Convert to {mode}',
  vmVirtualizationModeModalTitle: 'Change virtualization mode',
  vmVirtualizationModeModalBody:
    "You must know what you are doing, because it could break your setup (if you didn't install the bootloader in the MBR while switching from PV to HVM, or even worse, in HVM to PV, if you don't have the correct PV args)",
  vmShareButton: 'Share',
  xenSettingsLabel: 'Xen settings',
  xenStore: 'XenStore',
  guestOsLabel: 'Guest OS',
  miscLabel: 'Misc',
  virtualizationMode: 'Virtualization mode',
  startDelayLabel: 'Start delay (seconds)',
  cpuMaskLabel: 'CPU mask',
  selectCpuMask: 'Select core(s)…',
  cpuWeightLabel: 'CPU weight',
  defaultCpuWeight: 'Default ({value, number})',
  cpuCapLabel: 'CPU cap',
  defaultCpuCap: 'Default ({value, number})',
  pvArgsLabel: 'PV args',
  managementAgentVersion: 'Management agent version',
  osName: 'OS name',
  osKernel: 'OS kernel',
  autoPowerOn: 'Auto power on',
  protectFromDeletion: 'Protect from accidental deletion',
  protectFromShutdown: 'Protect from accidental shutdown',
  blockMigration: 'Prevent migration',
  unblockMigrationTitle: 'Allow migration',
  unblockMigrationConfirm: 'Are you sure you want to allow migration for this VM?',
  ha: 'HA',
  srHaTooltip: 'SR used for High Availability',
  nestedVirt: 'Nested virtualization',
  nestedVirtualizationWarning: 'Unstable feature, insecure for the host, usage is discouraged. Click for more details.',
  vmAffinityHost: 'Affinity host',
  vmNeedToBeHalted: 'The VM needs to be halted',
  vmVga: 'VGA',
  vmVideoram: 'Video RAM',
  vmNicType: 'NIC type',
  vtpm: 'VTPM',
  vtpmRequireUefi: 'A UEFI boot firmware is necessary to use a VTPM',
  noAffinityHost: 'None',
  originalTemplate: 'Original template',
  unknownOsName: 'Unknown',
  unknownOsKernel: 'Unknown',
  unknownOriginalTemplate: 'Unknown',
  vmLimitsLabel: 'VM limits',
  resourceSet: 'Resource set',
  resourceSetNone: 'None',
  selectUser: 'Select user',
  suspendSr: 'Suspend SR',
  viridian: 'Viridian',
  vmCpuLimitsLabel: 'CPU limits',
  vmCpuTopology: 'Topology',
  vmChooseCoresPerSocket: 'Default behavior',
  vmSocketsWithCoresPerSocket:
    '{nSockets, number} socket{nSockets, plural, one {} other {s}} with {nCores, number} core{nCores, plural, one {} other {s}} per socket',
  vmCoresPerSocketNone: 'None',
  vmCoresPerSocket: '{nCores, number} core{nCores, plural, one {} other {s}} per socket',
  vmCoresPerSocketNotDivisor: "Not a divisor of the VM's max CPUs",
  vmCoresPerSocketExceedsCoresLimit: 'The selected value exceeds the cores limit ({maxCores, number})',
  vmCoresPerSocketExceedsSocketsLimit: 'The selected value exceeds the sockets limit ({maxSockets, number})',
  vmHaDisabled: 'Disabled',
  vmMemoryLimitsLabel: 'Memory limits (min/max)',
  vmUuid: 'VM UUID',
  vmVgpu: 'vGPU',
  vmVgpus: 'GPUs',
  vmVgpuNone: 'None',
  vmAddVgpu: 'Add vGPU',
  vmSelectVgpuType: 'Select vGPU type',
  vmAcls: 'ACLs',
  vmAddAcls: 'Add ACLs',
  addAclsErrorTitle: 'Failed to add ACL(s)',
  addAclsErrorMessage: 'User(s)/group(s) and role are required.',
  createVusb: 'Create VUSB',
  removeAcl: 'Delete',
  moreAcls: '{nAcls, number} more…',
  pusbDescription: 'PUSB description',
  pusbSpeed: 'PUSB speed',
  pusbVersion: 'PUSB version',
  selectPusb: 'Select PUSB',
  vmBootFirmware: 'Boot firmware',
  vmCreator: 'VM creator',
  vmDefaultBootFirmwareLabel: 'default (bios)',
  vmBootFirmwareWarningMessage:
    "You're about to change your boot firmware. This is still experimental in CH/XCP-ng 8.0. Are you sure you want to continue?",
  setAndRestartVmFailed: 'Error on restarting and setting the VM: {vm}',
  vmEditAndRestartModalTitle: 'VM is currently running',
  vmEditAndRestartModalMessage:
    'This VM is currently running, and needs to be stopped to modify this value. Restart VM and modify this value?',
  firmwareNotSupported: 'Firmware not supported',
  vusbs: 'VUSBs',
  vusbRemainUnplugged: 'The VUSB remain unplugged until the next shutdown/start',
  vusbUnplugTooltip: 'Unplug until the next shutdown/start',
  // ----- VM placeholders -----

  vmHomeNamePlaceholder: 'Long click to add a name',
  vmHomeDescriptionPlaceholder: 'Long click to add a description',

  // ----- Templates -----

  copyToTemplate: 'Copy to template',
  copyToTemplateMessage: 'Are you sure you want to copy this snapshot to a template?',
  templateHomeNamePlaceholder: 'Click to add a name',
  templateHomeDescriptionPlaceholder: 'Click to add a description',
  templateDelete: 'Delete template',
  templateDeleteModalTitle: 'Delete VM template{templates, plural, one {} other {s}}',
  templateDeleteModalBody:
    'Are you sure you want to delete {templates, plural, one {this} other {these}} template{templates, plural, one {} other {s}}?',
  failedToDeleteTemplatesTitle: 'Delete template{nTemplates, plural, one {} other {s}} failed',
  failedToDeleteTemplatesMessage:
    'Failed to delete {nTemplates, number} template{nTemplates, plural, one {} other {s}}.',
  deleteDefaultTemplatesTitle: 'Delete default template{nDefaultTemplates, plural, one {} other {s}}',
  deleteDefaultTemplatesMessage:
    'You are attempting to delete {nDefaultTemplates, number} default template{nDefaultTemplates, plural, one {} other {s}}. Do you want to continue?',
  deleteProtectedTemplatesTitle: 'Delete protected template{nProtectedTemplates, plural, one {} other {s}}',
  deleteProtectedTemplatesMessage:
    'You are attempting to delete {nProtectedTemplates, plural, one {a} other {nProtectedTemplates}} template{nProtectedTemplates, plural, one {} other {s}} protected from accidental deletion. Do you want to continue?',
  // ----- Dashboard -----
  poolPanel: 'Pool{pools, plural, one {} other {s}}',
  hostPanel: 'Host{hosts, plural, one {} other {s}}',
  vmPanel: 'VM{vms, plural, one {} other {s}}',
  memoryStatePanel: 'RAM Usage:',
  usedMemory: 'Used Memory',
  totalMemory: 'Total Memory',
  totalCpus: 'CPUs Total',
  usedVCpus: 'Used vCPUs',
  usedSpace: 'Used Space',
  totalSpace: 'Total Space',
  cpuStatePanel: 'CPUs Usage',
  vmStatePanel: 'VMs Power state',
  vmStateHalted: 'Halted',
  vmStateOther: 'Other',
  vmStateRunning: 'Running',
  vmStateAll: 'All',
  taskStatePanel: 'Pending tasks',
  usersStatePanel: 'Users',
  srStatePanel: 'Storage state',
  ofUsage: '{usage} (of {total})',
  ofCpusUsage:
    '{nVcpus, number} vCPU{nVcpus, plural, one {} other {s}} (of {nCpus, number} CPU{nCpus, plural, one {} other {s}})',
  noSrs: 'No storage',
  srName: 'Name',
  srPool: 'Pool',
  srHost: 'Host',
  srFormat: 'Type',
  srSize: 'Size',
  srUsage: 'Usage',
  srUsed: 'used',
  srFree: 'free',
  srUsageStatePanel: 'Storage Usage',
  srTopUsageStatePanel: 'Top 5 SR Usage (in %)',
  notEnoughPermissionsError: 'Not enough permissions!',
  vmsStates: '{running, number} running ({halted, number} halted)',
  dashboardStatsButtonRemoveAll: 'Clear selection',
  dashboardStatsButtonAddAllHost: 'Add all hosts',
  dashboardStatsButtonAddAllVM: 'Add all VMs',
  dashboardSendReport: 'Send report',
  dashboardReport: 'Report',
  dashboardSendReportMessage: 'This will send a usage report to your configured emails.',
  dashboardSendReportInfo: 'The usage report and transport email plugins need to be loaded!',

  // --- Stats board --
  weekHeatmapData: '{value} {date, date, medium}',
  weekHeatmapNoData: 'No data.',
  weeklyHeatmap: 'Weekly Heatmap',
  weeklyCharts: 'Weekly Charts',
  weeklyChartsScaleInfo: 'Synchronize scale:',
  statsDashboardGenericErrorTitle: 'Stats error',
  statsDashboardGenericErrorMessage: 'There is no stats available for:',
  noSelectedMetric: 'No selected metric',
  statsDashboardSelectObjects: 'Select',
  metricsLoading: 'Loading…',

  // ----- Health -----
  length: 'Length: {length}',
  deleteBackups: 'Delete backup{nBackups, plural, one {} other {s}}',
  deleteBackupsMessage:
    'Are you sure you want to delete {nBackups, number} backup{nBackups, plural, one {} other {s}}?',
  detachedBackups: 'Detached backups',
  detachedVmSnapshots: 'Detached VM snapshots',
  duplicatedMacAddresses: 'Duplicated MAC addresses',
  localDefaultSrs: 'Local default SRs',
  localDefaultSrsStatusTip:
    "It is usually recommended for a pool's default SR to be shared to avoid unexpected behaviors",
  missingJob: 'Missing job',
  missingVm: 'Missing VM',
  missingVmInJob: 'This VM does not belong to this job',
  missingSchedule: 'Missing schedule',
  unknownSchedule: 'Unknown schedule',
  noDetachedBackups: 'No backups',
  noDuplicatedMacAddresses: 'No duplicated MAC addresses',
  noOldSnapshots: 'No snapshots older than 30 days with no enabled schedule',
  reason: 'Reason',
  oldSnapshots: 'Snapshots older than 30 days with no enabled schedule',
  orphanedVdis: 'Orphan VDIs',
  orphanVdisTip: 'VDIs and VDI snapshots that are not attached to a VM',
  orphanedVms: 'Orphaned VMs snapshot',
  noOrphanedObject: 'No orphans',
  poolsWithNoDefaultSr: 'Pools with no default SR',
  tooManySnapshots: 'Too many snapshots',
  tooManySnapshotsTip: 'VMs with more than the recommended amount of snapshots',
  noLocalDefaultSrs: 'No local default SRs',
  noTooManySnapshotsObject: 'No VMs with too many snapshots',
  numberOfSnapshots: 'Number of snapshots',
  guestToolsNecessary: 'Guest tools must be installed to display stats',
  guestToolStatus: 'Guest Tools status',
  guestToolStatusTip: 'VMs with missing or outdated guest tools',
  noGuestToolStatusObject: 'All running VMs have up to date guest tools',
  guestToolStatusColumn: 'Status',
  deleteOrphanedVdi: 'Delete orphaned snapshot VDI',
  deleteSelectedOrphanedVdis: 'Delete selected orphaned snapshot VDIs',
  vdisOnControlDomain: 'VDIs attached to Control Domain',
  vifOnVmWithNetwork: 'VIF #{vifDevice, number} on {vm} ({network})',
  vifs: 'VIFs',
  vmNameLabel: 'Name',
  vmNameDescription: 'Description',
  vmContainer: 'Resident on',
  snapshotOf: 'Snapshot of',
  legacySnapshots: 'Legacy backups snapshots',
  alarmMessage: 'Alarms',
  noAlarms: 'No alarms',
  alarmDate: 'Date',
  alarmContent: 'Content',
  alarmObject: 'Issue on',
  alarmPool: 'Pool',
  spaceLeftTooltip: '{used}% used ({free} left)',
  unhealthyVdis: 'Unhealthy VDIs',
  vdisToCoalesce: 'VDIs to coalesce',
  vdisWithInvalidVhdParent: 'VDIs with invalid parent VHD',
  srVdisToCoalesceWarning: 'This SR has {nVdis, number} VDI{nVdis, plural, one {} other {s}} to coalesce',

  // ----- New VM -----
  createVmModalTitle: 'Create VM',
  createVmModalWarningMessage:
    "You're about to use a large amount of resources available on the resource set. Are you sure you want to continue?",
  copyHostBiosStrings: 'Copy host BIOS strings to VM',
  enableVtpm: 'Enable VTPM',
  newVmCreateNewVmOn: 'Create a new VM on {select}',
  newVmCreateNewVmNoPermission: 'You have no permission to create a VM',
  newVmInfoPanel: 'Info',
  newVmNameLabel: 'Name',
  newVmTemplateLabel: 'Template',
  newVmDescriptionLabel: 'Description',
  newVmPerfPanel: 'Performance',
  newVmVcpusLabel: 'vCPUs',
  newVmRamLabel: 'RAM',
  newVmRamWarning: 'The memory is below the threshold ({threshold})',
  newVmStaticMaxLabel: 'Static memory max',
  newVmDynamicMinLabel: 'Dynamic memory min',
  newVmDynamicMaxLabel: 'Dynamic memory max',
  newVmInstallSettingsPanel: 'Install settings',
  newVmIsoDvdLabel: 'ISO/DVD',
  newVmNetworkLabel: 'Network',
  newVmInstallNetworkPlaceHolder: 'e.g: http://httpredir.debian.org/debian',
  newVmPvArgsLabel: 'PV Args',
  newVmPxeLabel: 'PXE',
  newVmInterfacesPanel: 'Interfaces',
  newVmMacLabel: 'MAC',
  newVmAddInterface: 'Add interface',
  newVmDisksPanel: 'Disks',
  newVmSrLabel: 'SR',
  newVmSizeLabel: 'Size',
  newVmAddDisk: 'Add disk',
  newVmSummaryPanel: 'Summary',
  newVmCreate: 'Create',
  newVmReset: 'Reset',
  newVmSelectTemplate: 'Select template',
  newVmSshKey: 'SSH key',
  noConfigDrive: 'No config drive',
  newVmCustomConfig: 'Custom config',
  availableTemplateVarsInfo: 'Click here to see the available template variables',
  availableTemplateVarsTitle: 'Available template variables',
  templateNameInfo: 'the VM\'s name. It must not contain "_"',
  templateIndexInfo: "the VM's index, it will take 0 in case of single VM",
  templateSshInfo: 'SSH key corresponding to the SSH title',
  templateEscape: 'Tip: escape any variable with a preceding backslash (\\)',
  coreOsDefaultTemplateError: 'Error on getting the default coreOS cloud template',
  newVmBootAfterCreate: 'Boot VM after creation',
  newVmMacPlaceholder: 'Auto-generated if empty',
  newVmCpuWeightLabel: 'CPU weight',
  newVmDefaultCpuWeight: 'Default: {value, number}',
  newVmCpuCapLabel: 'CPU cap',
  newVmDefaultCpuCap: 'Default: {value, number}',
  newVmCloudConfig: 'Cloud config',
  newVmCreateVms: 'Create VMs',
  newVmCreateVmsConfirm: 'Are you sure you want to create {nbVms, number} VMs?',
  newVmMultipleVms: 'Multiple VMs:',
  newVmMultipleVmsPattern: 'Name pattern:',
  newVmMultipleVmsPatternPlaceholder: 'e.g.: \\{name\\}_%',
  newVmFirstIndex: 'First index:',
  newVmNumberRecalculate: 'Recalculate VMs number',
  newVmNameRefresh: 'Refresh VMs name',
  newVmAffinityHost: 'Affinity host',
  newVmAdvancedPanel: 'Advanced',
  newVmShowAdvanced: 'Show advanced settings',
  newVmHideAdvanced: 'Hide advanced settings',
  newVmShare: 'Share this VM',
  newVmSrsNotOnSameHost: 'The SRs must either be on the same host or shared',
  newVmNetworkConfigLabel: 'Network config',
  newVmNetworkConfigInfo: 'Network configuration is only compatible with the {noCloudDatasourceLink}.',
  newVmNetworkConfigDocLink: 'See {networkConfigDocLink}.',
  newVmNetworkConfigTooltip: 'Click here to get more information about network config',
  newVmUserConfigLabel: 'User config',
  newVmNoCloudDatasource: 'NoCloud datasource',
  newVmNetworkConfigDoc: 'Network config documentation',
  templateHasBiosStrings: 'The template already contains the BIOS strings',
  secureBootLinkToDocumentationMessage: 'Click for more information about Guest UEFI Secure Boot.',
  secureBootNotSetup: 'This pool has not yet been setup for Guest UEFI Secure Boot. Click for more information.',
  seeVtpmDocumentation: 'See VTPM documentation',
  vmBootFirmwareIsUefi: 'The boot firmware is UEFI',
  destroyCloudConfigVdiAfterBoot: 'Destroy cloud config drive after first boot',
  vtpmNotSupported: 'VTPM is only supported on pools running XCP-ng/XS 8.3 or later.',
  warningVtpmRequired: 'This template requires a VTPM, if you proceed, the VM will likely not be able to boot.',

  // ----- Self -----
  resourceSets: 'Resource sets',
  noResourceSets: 'No resource sets.',
  resourceSetName: 'Resource set name',
  resourceSetUsers: 'Users',
  resourceSetPools: 'Pools',
  resourceSetTemplates: 'Templates',
  resourceSetSrs: 'SRs',
  resourceSetNetworks: 'Networks',
  recomputeResourceSets: 'Recompute all limits',
  saveResourceSet: 'Save',
  resetResourceSet: 'Reset',
  editResourceSet: 'Edit',
  defaultTags: 'Default tags',
  deleteResourceSet: 'Delete',
  deleteResourceSetWarning: 'Delete resource set',
  deleteResourceSetQuestion: 'Are you sure you want to delete this resource set?',
  resourceSetMissingObjects: 'Missing objects:',
  unknownResourceSetValue: 'Unknown',
  availableHosts: 'Available hosts',
  excludedHosts: 'Excluded hosts',
  noHostsAvailable: 'No hosts available.',
  availableHostsDescription: 'VMs created from this resource set shall run on the following hosts.',
  maxCpus: 'Maximum CPUs',
  maxRam: 'Maximum RAM',
  maxDiskSpace: 'Maximum disk space',
  ipPool: 'IP pool',
  quantity: 'Quantity',
  usedResourceLabel: 'Used',
  availableResourceLabel: 'Available',
  resourceSetQuota: 'Used: {usage} (Total: {total})',
  resourceSetNew: 'New',
  shareVmsByDefault: 'Share VMs by default',
  nVmsInResourceSet:
    '{nVms, number} VM{nVms, plural, one {} other {s}} belong{nVms, plural, one {s} other {}} to this Resource Set',
  unlimitedResourceSetUsage: 'Used: {usage}',

  // ---- VM import ---
  fileType: 'File type:',
  firmware: 'Firmware',
  fromUrl: 'From URL',
  UrlImportSrsCompatible: 'URL import is only compatible with ISO SRs',
  fromVmware: 'From VMware',
  importVmsList: 'Drop OVA or XVA files here to import Virtual Machines.',
  noSelectedVms: 'No selected VMs.',
  noToolsInstalled: 'No tools installed',
  url: 'URL:',
  vmImportToPool: 'To Pool:',
  vmImportToSr: 'To SR:',
  vmsToImport: 'VM{nVms, plural, one {} other {s}} to import',
  importVmsCleanList: 'Reset',
  vmImportSuccess: 'VM import success',
  vmImportFailed: 'VM import failed',
  vdiImportSuccess: 'VDI import success',
  vdiImportFailed: 'VDI import failed',
  setVmFailed: 'Error on setting the VM: {vm}',
  startVmImport: 'Import starting…',
  startVdiImport: 'VDI import starting…',
  startVmExport: 'Export starting…',
  startVdiExport: 'VDI export starting…',
  nCpus: 'Number of CPUs',
  vmMemory: 'Memory',
  diskInfo: 'Disk {position} ({capacity})',
  diskDescription: 'Disk description',
  noDisks: 'No disks.',
  noNetworks: 'No networks.',
  networkInfo: 'Network {name}',
  noVmImportErrorDescription: 'No description available',
  vmImportError: 'Error:',
  vmImportFileType: '{type} file:',
  vmImportConfigAlert: 'Please check and/or modify the VM configuration.',
  toolsInstalled: 'The tools are installed',

  // ---- Disk import ---
  diskImportFailed: 'Disk import failed',
  diskImportSuccess: 'Disk import success',
  dropDisksFiles: 'Drop {types} files here to import disks.',
  importToSr: 'To SR',
  isoImportRequirement: 'To import ISO files, an ISO repository is required',

  // ---- Tasks ---
  poolTasks: 'Pool tasks',
  xoTasks: 'XO tasks',
  cancelTask: 'Cancel',
  destroyTask: 'Destroy',
  cancelTasks: 'Cancel selected tasks',
  destroyTasks: 'Destroy selected tasks',
  object: 'Object',
  objects: 'Objects',
  pool: 'Pool',
  task: 'Task',
  progress: 'Progress',
  previousTasks: 'Previous tasks',
  taskLastSeen: 'Last seen',

  // ---- Backup views ---
  backupSchedules: 'Schedules',
  loneSnapshotsMessages: '{nLoneSnapshots} lone snapshot{nLoneSnapshots, plural, one {} other {s}} to delete!',
  scheduleCron: 'Cron pattern',
  scheduleLastRun: 'Click to display last run details',
  scheduleName: 'Name',
  scheduleCopyId: 'Copy ID {id}',
  scheduleTimezone: 'Timezone',
  scheduleExportRetention: 'Backup retention',
  scheduleCopyRetention: 'Replication retention',
  scheduleSnapshotRetention: 'Snapshot retention',
  poolMetadataRetention: 'Pool retention',
  xoMetadataRetention: 'XO retention',
  getRemote: 'Get remote',
  noBackups: 'There are no backups!',
  restoreBackupsInfo: 'Click on a VM to display restore options',
  remoteEnabled: 'Enabled',
  remoteDisabled: 'Disabled',
  enableRemote: 'Enable',
  disableRemote: 'Disable',
  remoteErrorMessage: 'The URL ({url}) is invalid (colon in path). Click this button to change the URL to {newUrl}.',
  backupVmNameColumn: 'VM Name',
  backupVmDescriptionColumn: 'VM Description',
  firstBackupColumn: 'Oldest backup',
  lastBackupColumn: 'Latest backup',
  availableBackupsColumn: 'Available Backups',
  backupRestoreErrorTitle: 'Missing parameters',
  backupRestoreErrorMessage: 'Choose a SR and a backup',
  backupisKey: 'key',
  backupIsIncremental: 'incremental',
  backupIsDifferencing: 'differencing',
  vmsToBackup: 'VMs to backup',
  refreshBackupList: 'Refresh backup list',
  restoreVmBackups: 'Restore',
  restoreVmBackupsTitle: 'Restore {vm}',
  checkVmBackupsTitle: 'Restore health check {vm}',
  restoreVmBackupsBulkTitle: 'Restore {nVms, number} VM{nVms, plural, one {} other {s}}',
  restoreVmBackupsBulkMessage:
    'Restore {nVms, number} VM{nVms, plural, one {} other {s}} from {nVms, plural, one {its} other {their}} {oldestOrLatest} backup.',
  restoreMetadataBackupWarning:
    'This operation will overwrite the host metadata. Only perform a metadata restore if it is a new server with nothing running on it.',
  oldest: 'oldest',
  latest: 'latest',
  restoreVmBackupsStart: 'Start VM{nVms, plural, one {} other {s}} after restore',
  restoreVmBackupsBulkErrorTitle: 'Multi-restore error',
  restoreVmUseDifferentialRestore: 'Use differential restore',
  restoreMetadataBackupTitle: 'Restore {item}',
  bulkRestoreMetadataBackupTitle:
    'Restore {nMetadataBackups, number} metadata backup{nMetadataBackups, plural, one {} other {s}}',
  bulkRestoreMetadataBackupMessage:
    'Restore {nMetadataBackups, number} metadata backup{nMetadataBackups, plural, one {} other {s}} from {nMetadataBackups, plural, one {its} other {their}} {oldestOrLatest} backup',
  deleteMetadataBackupTitle: 'Delete {item} backup',
  restoreVmBackupsBulkErrorMessage: 'You need to select a destination SR',
  deleteVmBackups: 'Delete backups…',
  deleteVmBackupsTitle: 'Delete {vm} backups',
  deleteBackupsSelect: 'Select backups to delete:',
  deleteVmBackupsSelectAll: 'All',
  deleteVmBackupsBulkTitle: 'Delete backups',
  deleteVmBackupsBulkMessage:
    'Are you sure you want to delete all the backups from {nVms, number} VM{nVms, plural, one {} other {s}}?',
  deleteVmBackupsBulkConfirmText: 'delete {nBackups} backup{nBackups, plural, one {} other {s}}',
  bulkDeleteMetadataBackupsTitle: 'Delete metadata backups',
  bulkDeleteMetadataBackupsMessage:
    'Are you sure you want to delete all the backups from {nMetadataBackups, number} metadata backup{nMetadataBackups, plural, one {} other {s}}?',
  bulkDeleteMetadataBackupsConfirmText:
    'delete {nMetadataBackups} metadata backup{nMetadataBackups, plural, one {} other {s}}',
  healthCheck: 'Health check',
  healthCheckChooseSr: 'Choose SR used for VMs restoration',
  healthCheckTagsInfo: 'If no tags are specified, all VMs in the backup will be tested.',
  healthCheckAvailableEnterpriseUser: 'Only available to enterprise users',
  remoteNotCompatibleWithSelectedProxy:
    "The backup will not be run on this remote because it's not compatible with the selected proxy",
  remoteLoadBackupsFailure: 'Loading backups failed',
  remoteLoadBackupsFailureMessage: 'Failed to load backups from {name}.',
  vmsTags: 'VMs tags',
  tagNoBak: 'VMs with this tag will not be backed up {reason, select, null {} other {({reason})}}',
  tagNoHealthCheck: 'VMs with this tag will not be tested by health check {reason, select, null {} other {({reason})}}',
  tagNotifyOnSnapshot: 'An email will be sent when a VM with this tag is snapshotted',
  nbdConnections: `NBD connections`,
  speedLimitNoUnit: 'Speed limit',

  // ----- Restore files view -----
  restoreFiles: 'Restore backup files',
  restoreFilesError: 'Invalid options',
  restoreFilesExportFormat: 'Export format:',
  restoreFilesFromBackup: 'Restore file from {name}',
  restoreFilesSelectBackup: 'Select a backup…',
  restoreFilesSelectDisk: 'Select a disk…',
  restoreFilesSelectPartition: 'Select a partition…',
  restoreFilesSelectFiles: 'Select a file…',
  restoreFilesNoFilesSelected: 'No files selected',
  restoreFilesSelectedFilesAndFolders: 'Selected files/folders ({files}):',
  restoreFilesDiskError: 'Error while scanning disk',
  restoreFilesSelectAllFiles: "Select all this folder's files",
  restoreFilesSelectFolder: 'Select this folder',
  restoreFilesTgz: 'tar+gzip (.tgz)',
  restoreFilesUnselectAll: 'Unselect all files',
  restoreFilesZip: 'ZIP (slow)',

  // ----- Modals -----
  bypassBackupHostModalMessage: 'There may be ongoing backups on the host. Are you sure you want to continue?',
  bypassBackupPoolModalMessage: 'There may be ongoing backups on the pool. Are you sure you want to continue?',
  bypassBackupStorageModalMessage: 'There may be ongoing backups on the storage. Are you sure you want to continue?',
  bypassBlockedMigrationsModalTitle: 'Bypass blocked migrations',
  bypassBlockedMigrationsModalMessage: 'This will allow migration on these VMs: {vms}',
  emergencyShutdownHostModalTitle: 'Emergency shutdown Host',
  emergencyShutdownHostModalMessage: 'Are you sure you want to shutdown {host}?',
  emergencyShutdownHostsModalTitle: 'Emergency shutdown Host{nHosts, plural, one {} other {s}}',
  emergencyShutdownHostsModalMessage:
    'Are you sure you want to shutdown {nHosts, number} Host{nHosts, plural, one {} other {s}}?',
  stopHostModalTitle: 'Shutdown host',
  stopHostModalMessage:
    "This will shutdown your host. Do you want to continue? If it's the pool master, your connection to the pool will be lost",
  forceStopHost: 'Force shutdown host',
  forceStopHostMessage: 'This will shutdown your host without evacuating its VMs. Do you want to continue?',
  addHostModalTitle: 'Add host',
  addHostModalMessage: 'Are you sure you want to add {host} to {pool}?',
  restartHostModalTitle: 'Restart host',
  restartHostModalMessage: 'This will restart your host. Do you want to continue?',
  restartHostsAgentsModalTitle:
    'Restart Host{nHosts, plural, one {} other {s}} agent{nHosts, plural, one {} other {s}}',
  restartHostsAgentsModalMessage:
    'Are you sure you want to restart {nHosts, number} Host{nHosts, plural, one {} other {s}} agent{nHosts, plural, one {} other {s}}?',
  restartHostsModalTitle: 'Restart Host{nHosts, plural, one {} other {s}}',
  restartHostsModalMessage: 'Are you sure you want to restart {nHosts, number} Host{nHosts, plural, one {} other {s}}?',
  startVmsModalTitle: 'Start VM{vms, plural, one {} other {s}}',
  cloneAndStartVM: 'Start a copy',
  forceStartVm: 'Force start',
  forceStartVmModalTitle: 'Forbidden operation',
  blockedStartVmModalMessage: 'Start operation for this vm is blocked.',
  blockedStartVmsModalMessage: 'Forbidden operation start for {nVms, number} vm{nVms, plural, one {} other {s}}.',
  startVmsModalMessage: 'Are you sure you want to start {vms, number} VM{vms, plural, one {} other {s}}?',
  failedVmsErrorMessage:
    '{nVms, number} VM{nVms, plural, one {} other {s}} failed. Please check logs for more information',
  failedVmsErrorTitle: 'Start failed',
  failedDeleteErrorTitle: 'Delete failed',
  stopHostsModalTitle: 'Stop Host{nHosts, plural, one {} other {s}}',
  stopHostsModalMessage: 'Are you sure you want to stop {nHosts, number} Host{nHosts, plural, one {} other {s}}?',
  stopVmsModalTitle: 'Stop VM{vms, plural, one {} other {s}}',
  stopVmsModalMessage: 'Are you sure you want to stop {vms, number} VM{vms, plural, one {} other {s}}?',
  restartVmModalTitle: 'Restart VM',
  restartVmModalMessage: 'Are you sure you want to restart {name}?',
  stopVmModalTitle: 'Stop VM',
  stopVmModalMessage: 'Are you sure you want to stop {name}?',
  blockedOperation: 'Blocked operation',
  stopVmBlockedModalMessage: 'Stop operation for this VM is blocked. Would you like to stop it anyway?',
  vmHasNoTools: 'No guest tools',
  vmHasNoToolsMessage: "The VM doesn't have Xen tools installed, which are required to properly stop or reboot it.",
  confirmForceShutdown: 'Would you like to force shutdown the VM?',
  confirmForceReboot: 'Would you like to force reboot the VM?',
  suspendVmsModalTitle: 'Suspend VM{vms, plural, one {} other {s}}',
  suspendVmsModalMessage: 'Are you sure you want to suspend {vms, number} VM{vms, plural, one {} other {s}}?',
  pauseVmsModalTitle: 'Pause VM{vms, plural, one {} other {s}}',
  pauseVmsModalMessage: 'Are you sure you want to pause {vms, number} VM{vms, plural, one {} other {s}}?',
  restartVmsModalTitle: 'Restart VM{vms, plural, one {} other {s}}',
  restartVmsModalMessage: 'Are you sure you want to restart {vms, number} VM{vms, plural, one {} other {s}}?',
  restartVmBlockedModalMessage: 'Restart operation for this VM is blocked. Would you like to restart it anyway?',
  snapshotSaveMemory: 'save memory',
  snapshotVmsModalTitle: 'Snapshot VM{vms, plural, one {} other {s}}',
  deleteVmsModalTitle: 'Delete VM{vms, plural, one {} other {s}}',
  deleteVmsModalMessage:
    'Are you sure you want to delete {vms, number} VM{vms, plural, one {} other {s}}? ALL VM DISKS WILL BE REMOVED',
  deleteVmsConfirmText: 'delete {nVms, number} vm{nVms, plural, one {} other {s}}',
  deleteVmModalTitle: 'Delete VM',
  deleteVmModalMessage: 'Are you sure you want to delete this VM? ALL VM DISKS WILL BE REMOVED',
  deleteVmBlockedModalTitle: 'Blocked operation',
  deleteVmBlockedModalMessage: 'Removing the VM is a blocked operation. Would you like to remove it anyway?',
  forceVmMigrateModalTitle: 'Force migration',
  forceVmMigrateModalMessage:
    'The VM is incompatible with the CPU features of the destination host. Would you like to force it anyway?',
  migrateVmModalTitle: 'Migrate VM',
  migrateVmSelectHost: 'Select a destination host:',
  migrateVmSelectMigrationNetwork: 'Select a migration network:',
  migrateVmSelectNetworks: 'For each VIF, select a network:',
  migrateVmsSelectSr: 'Select a destination SR:',
  migrateVmsSelectSrIntraPool: 'Select a destination SR for local disks:',
  migrateVmsSelectNetwork: 'Select a network on which to connect each VIF:',
  migrateVmsSmartMapping: 'Smart mapping',
  migrateVmVif: 'VIF',
  migrateVmNetwork: 'Network',
  migrateVmNoTargetHost: 'No target host',
  migrateVmNoTargetHostMessage: 'A target host is required to migrate a VM',
  migrateVmNoSr: 'SR required',
  migrateVmNoSrMessage: 'A destination SR is required',
  migrateVmNoDefaultSrError: 'No default SR',
  migrateVmNotConnectedDefaultSrError: 'Default SR not connected to host',
  chooseSrForEachVdisModalSelectSr: 'For each VDI, select an SR (optional)',
  chooseSrForEachVdisModalMainSr: 'Select main SR…',
  chooseSrForEachVdisModalVdiLabel: 'VDI',
  chooseSrForEachVdisModalSrLabel: 'SR*',
  deleteJobsModalTitle: 'Delete job{nJobs, plural, one {} other {s}}',
  deleteJobsModalMessage: 'Are you sure you want to delete {nJobs, number} job{nJobs, plural, one {} other {s}}?',
  deleteVbdsModalTitle: 'Delete VBD{nVbds, plural, one {} other {s}}',
  deleteVbdsModalMessage: 'Are you sure you want to delete {nVbds, number} VBD{nVbds, plural, one {} other {s}}?',
  deleteVdiModalTitle: 'Delete VDI',
  deleteVdiModalMessage: 'Are you sure you want to delete this disk? ALL DATA ON THIS DISK WILL BE LOST',
  deleteVdisModalTitle: 'Delete VDI{nVdis, plural, one {} other {s}}',
  deleteVdisModalMessage:
    'Are you sure you want to delete {nVdis, number} disk{nVdis, plural, one {} other {s}}? ALL DATA ON THESE DISKS WILL BE LOST',
  deleteSchedulesModalTitle: 'Delete schedule{nSchedules, plural, one {} other {s}}',
  deleteSchedulesModalMessage:
    'Are you sure you want to delete {nSchedules, number} schedule{nSchedules, plural, one {} other {s}}?',
  deleteRemotesModalTitle: 'Delete remote{nRemotes, plural, one {} other {s}}',
  deleteRemotesModalMessage:
    'Are you sure you want to delete {nRemotes, number} remote{nRemotes, plural, one {} other {s}}?',
  revertVmModalTitle: 'Revert your VM',
  shareVmInResourceSetModalTitle: 'Share your VM',
  shareVmInResourceSetModalMessage:
    'This VM will be shared with all the members of the self-service {self}. Are you sure?',
  deleteVifsModalTitle: 'Delete VIF{nVifs, plural, one {} other {s}}',
  deleteVifsModalMessage: 'Are you sure you want to delete {nVifs, number} VIF{nVifs, plural, one {} other {s}}?',
  deleteSnapshotModalTitle: 'Delete snapshot',
  deleteSnapshotModalMessage: 'Are you sure you want to delete this snapshot?',
  deleteSnapshotsModalTitle: 'Delete snapshot{nVms, plural, one {} other {s}}',
  deleteSnapshotsModalMessage:
    'Are you sure you want to delete {nVms, number} snapshot{nVms, plural, one {} other {s}}?',
  disconnectVbdsModalTitle: 'Disconnect VBD{nVbds, plural, one {} other {s}}',
  disconnectVbdsModalMessage:
    'Are you sure you want to disconnect {nVbds, number} VBD{nVbds, plural, one {} other {s}}?',
  disableHost: 'Disable host',
  disableHostModalMessage: 'Are you sure you want to disable {host}? This will prevent new VMs from starting.',
  revertVmModalMessage:
    'Are you sure you want to revert this VM to the snapshot state? This operation is irreversible.',
  revertVmModalSnapshotBefore: 'Snapshot before',
  importBackupModalSelectBackup: 'Select your backup…',
  importBackupModalSelectSr: 'Select a destination SR…',
  deleteOrphanedVdisModalTitle: 'Delete orphaned snapshot VDIs',
  deleteOrphanedVdisModalMessage:
    'Are you sure you want to delete {nVdis, number} orphaned snapshot VDI{nVdis, plural, one {} other {s}}?',
  definitiveMessageModal: 'This operation is definitive.',
  existingLunModalTitle: 'Previous LUN Usage',
  existingLunModalText:
    'This LUN has been previously used as storage by a XenServer host. All data will be lost if you choose to continue with the SR creation.',
  alreadyRegisteredModal: 'Replace current registration?',
  alreadyRegisteredModalText:
    'Your XO appliance is already registered to {email}, do you want to forget and replace this registration ?',
  trialReadyModal: 'Ready for trial?',
  trialReadyModalText:
    'During the trial period, XOA need to have a working internet connection. This limitation does not apply for our paid plans!',
  cancelTasksModalTitle: 'Cancel task{nTasks, plural, one {} other {s}}',
  cancelTasksModalMessage: 'Are you sure you want to cancel {nTasks, number} task{nTasks, plural, one {} other {s}}?',
  destroyTasksModalTitle: 'Destroy task{nTasks, plural, one {} other {s}}',
  destroyTasksModalMessage: 'Are you sure you want to destroy {nTasks, number} task{nTasks, plural, one {} other {s}}?',
  forgetHostFromSrModalTitle: 'Forget host',
  forgetHostFromSrModalMessage:
    'Are you sure you want to forget this host? This will disconnect the SR from the host by removing the link between them (PBD).',
  forgetHostsFromSrModalTitle: 'Forget host{nPbds, plural, one {} other {s}}',
  forgetHostsFromSrModalMessage:
    'Are you sure you want to forget {nPbds, number} host{nPbds, plural, one {} other {s}}? This will disconnect the SR from these hosts by removing the links between the SR and the hosts (PBDs).',
  forgetSrFromHostModalTitle: 'Forget SR',
  forgetSrFromHostModalMessage:
    'Are you sure you want to forget this SR? This will disconnect the SR from the host by removing the link between them (PBD).',
  forgetSrsFromHostModalTitle: 'Forget SR{nPbds, plural, one {} other {s}}',
  forgetSrsFromHostModalMessage:
    'Are you sure you want to forget {nPbds, number} SR{nPbds, plural, one {} other {s}}? This will disconnect the SRs from the host by removing the links between the host and the SRs (PBDs).',
  optionalEntry: '* optional',
  vmWithDuplicatedMacAddressesMessage:
    'This VM contains a duplicate MAC address or has the same MAC address as another running VM. Do you want to continue?',
  vmsWithDuplicatedMacAddressesMessage:
    '{nVms, number} VM{nVms, plural, one {} other {s}} contain{nVms, plural, one {s} other {}} duplicate MAC addresses or {nVms, plural, one {has} other {have}} the same MAC addresses as other running VMs. Do you want to continue?',
  ignoreVdi: 'Ignore this VDI',
  selectDestinationSr: 'Select a destination SR',

  // ----- Servers -----
  enableServerErrorTitle: 'Enable server',
  enableServerErrorMessage: 'Unexpected response. Please check your server address.',
  serverLabel: 'Label',
  serverHost: 'Host',
  serverUsername: 'Username',
  serverPassword: 'Password',
  serverReadOnly: 'Read Only',
  serverUnauthorizedCertificates: 'Unauthorized Certificates',
  serverAllowUnauthorizedCertificates: 'Allow Unauthorized Certificates',
  serverUnauthorizedCertificatesInfo:
    "Enable it if your certificate is rejected, but it's not recommended because your connection will not be secured.",
  serverPlaceHolderUser: 'username',
  serverPlaceHolderPassword: 'password',
  serverPlaceHolderAddress: 'address[:port]',
  serverPlaceHolderLabel: 'label',
  serverConnect: 'Connect',
  serverError: 'Error',
  serverAddFailed: 'Adding server failed',
  serverStatus: 'Status',
  serverConnectionFailed: 'Connection failed. Click for more information.',
  serverAuthFailed: 'Authentication error',
  serverUnknownError: 'Unknown error',
  serverSelfSignedCertError: 'Invalid self-signed certificate',
  serverSelfSignedCertQuestion:
    'Do you want to accept self-signed certificate for this server even though it would decrease security?',
  serverEnable: 'Enable',
  serverEnabled: 'Enabled',
  serverDisabled: 'Disabled',
  serverDisable: 'Disable server',
  serverHttpProxy: ' HTTP proxy URL',
  serverHttpProxyPlaceHolder: ' HTTP proxy URL',

  // ----- Copy VM -----
  copyVm: 'Copy VM',
  copyVmName: 'Name',
  copyVmNamePatternPlaceholder: 'e.g.: "\\{name\\}_COPY"',
  copyVmSelectSr: 'Select SR',
  copyVmsNoTargetSr: 'No target SR',
  copyVmsNoTargetSrMessage: 'A target SR is required to copy a VM',
  notSupportedZstdWarning: 'Zstd is not supported on {nVms, number} VM{nVms, plural, one {} other {s}}',
  notSupportedZstdTooltip: 'Click to see the concerned VMs',
  fastCloneMode: 'Fast clone',
  fullCopyMode: 'Full copy',
  copyTemplate: 'Copy template',

  // ----- Detach host -----
  detachHostModalTitle: 'Detach host',
  detachHostModalMessage:
    'Are you sure you want to detach {host} from its pool? THIS WILL REMOVE ALL VMs ON ITS LOCAL STORAGE AND REBOOT THE HOST.',
  detachHost: 'Detach',

  // ----- Advanced Live Telemetry -----
  advancedLiveTelemetry: 'Advanced Live Telemetry',
  pluginNetDataIsNecessary: 'Netdata plugin is necessary',
  enableAdvancedLiveTelemetry: 'Enable Advanced Live Telemetry',
  enableAdvancedLiveTelemetrySuccess: 'Advanced Live Telemetry successfully enabled',
  xcpOnlyFeature: 'This feature is only XCP-ng compatible',

  // ----- Forget host -----
  forgetHostModalTitle: 'Forget host',
  forgetHostModalMessage:
    "Are you sure you want to forget {host} from its pool? Be sure this host can't be back online, or use detach instead.",
  forgetHost: 'Forget',

  // ----- Set pool master -----

  setPoolMasterModalTitle: 'Designate a new master',
  setPoolMasterModalMessage: 'This operation may take several minutes. Do you want to continue?',

  // ----- Network -----
  networkManagement: 'Management',
  newNetworkCreate: 'Create network',
  newNetworkInterface: 'Interface',
  newNetworkName: 'Name',
  newNetworkDescription: 'Description',
  newNetworkVlan: 'VLAN',
  newNetworkDefaultVlan: 'No VLAN if empty',
  newNetworkMtu: 'MTU',
  newNetworkDefaultMtu: 'Default: 1500',
  newNetworkBondMode: 'Bond mode',
  newNetworkInfo: 'Info',
  newNetworkType: 'Type',
  newNetworkPreferredCenter: 'Preferred center (optional)',
  newNetworkEncapsulation: 'Encapsulation',
  newNetworkEncrypted: 'Encrypted',
  encryptionWarning: 'A pool can have 1 encrypted GRE network and 1 encrypted VxLAN network max',
  preferredCenterTip: 'The host to try first to elect as center of the network',
  newNetworkSdnControllerTip: 'Please see the requirements',
  deleteNetwork: 'Delete network',
  deleteNetworkConfirm: 'Are you sure you want to delete this network?',
  networkInUse: 'This network is currently in use',
  pillBonded: 'Bonded',
  bondedNetwork: 'Bonded network',
  privateNetwork: 'Private network',
  addPool: 'Add pool',

  // ----- Add host -----
  hosts: 'Hosts',
  addHostNoHost: 'No host',
  addHostNoHostMessage: 'No host selected to be added',

  // ----- About View -----
  failedToFetchLatestMasterCommit: 'Failed to fetch latest master commit',
  noProSupport: 'Professional support missing!',
  productionUse: 'Want to use in production?',
  getSupport: 'Get pro support with the Xen Orchestra Appliance at {website}',
  bugTracker: 'Bug Tracker',
  bugTrackerText: 'Issues? Report it!',
  community: 'Community',
  communityText: 'Join our community forum!',
  freeTrial: 'Free Trial for Premium Edition!',
  freeTrialNow: 'Request your trial now!',
  issues: 'Any issue?',
  issuesText: 'Problem? Contact us!',
  documentation: 'Documentation',
  documentationText: 'Read our official doc',
  proSupportIncluded: 'Pro support included',
  xoAccount: 'Access your XO Account',
  openTicket: 'Report a problem',
  openTicketText: 'Problem? Open a ticket!',
  xoUpToDate: 'Your Xen Orchestra is up to date',
  xoFromSourceNotUpToDate:
    'You are not up to date with master. {nBehind} commit{nBehind, plural, one {} other {s}} behind {nAhead, plural, =0 {} other {and {nAhead, number} commit{nAhead, plural, one {} other {s}} ahead}}',

  // ----- Upgrade Panel -----
  upgradeNeeded: 'Upgrade needed',
  upgradeNow: 'Upgrade now!',
  or: 'Or',
  tryIt: 'Try it for free!',
  availableIn: 'This feature is available starting from {plan} Edition',
  notAvailable: 'This feature is not available in your version, contact your administrator to know more.',

  // ----- Updates View -----
  registration: 'Registration',
  settings: 'Settings',
  proxySettings: 'Proxy settings',
  proxySettingsHostPlaceHolder: 'Host (myproxy.example.org)',
  proxySettingsPortPlaceHolder: 'Port (eg: 3128)',
  proxySettingsUsernamePlaceHolder: 'Username',
  proxySettingsPasswordPlaceHolder: 'Password',
  updateRegistrationEmailPlaceHolder: 'Your email account',
  updateRegistrationPasswordPlaceHolder: 'Your password',
  updaterTroubleshootingLink: 'Troubleshooting documentation',
  update: 'Update',
  refresh: 'Refresh',
  upgrade: 'Upgrade',
  considerSubscribe:
    'Please consider subscribing and trying it with all the features for free during 30 days on {link}.',
  currentVersion: 'Current version:',
  register: 'Register',
  editRegistration: 'Edit registration',
  trialRegistration: 'Please, take time to register in order to enjoy your trial.',
  trialStartButton: 'Start trial',
  trialAvailableUntil: 'You can use a trial version until {date, date, medium}. Upgrade your appliance to get it.',
  trialConsumed: 'Your trial has been ended. Contact us or downgrade to Free version',
  trialLocked: 'Your xoa-updater service appears to be down. Your XOA cannot run fully without reaching this service.',
  noUpdateInfo: 'No update information available',
  waitingUpdateInfo: 'Update information may be available',
  upToDate: 'Your XOA is up-to-date',
  mustUpgrade: 'You need to update your XOA (new version is available)',
  registerNeeded: 'Your XOA is not registered for updates',
  updaterError: "Can't fetch update information",
  promptUpgradeReloadTitle: 'Upgrade successful',
  promptUpgradeReloadMessage:
    'Your XOA has successfully upgraded, and your browser must reload the application. Do you want to reload now ?',
  upgradeWarningTitle: 'Upgrade warning',
  upgradeWarningMessage:
    'You have some backup jobs in progress. If you upgrade now, these jobs will be interrupted! Are you sure you want to continue?',
  releaseChannels: 'Release channels',
  unlistedChannel: 'unlisted channel',
  unlistedChannelName: 'Unlisted channel name',
  selectChannel: 'Select channel',
  changeChannel: 'Change channel',
  updaterCommunity: 'The Web updater, the release channels and the proxy settings are available in XOA.',
  xoaBuild: 'XOA build:',

  // ----- OS Disclaimer -----
  disclaimerTitle: 'Xen Orchestra from the sources',
  disclaimerText1: "You are using XO from the sources! That's great for a personal/non-profit usage.",
  disclaimerText2: "If you are a company, it's better to use it with our appliance + pro support included:",
  disclaimerText3: 'This version is not bundled with any support nor updates. Use it with caution.',
  disclaimerText4: 'Why do I see this message?',
  notRegisteredDisclaimerInfo: 'You are not registered. Your XOA may not be up to date.',
  notRegisteredDisclaimerCreateAccount: 'Click here to create an account.',
  notRegisteredDisclaimerRegister: 'Click here to register and update your XOA.',

  // ----- PIF -----
  connectPif: 'Connect PIF',
  connectPifConfirm: 'Are you sure you want to connect this PIF?',
  disconnectPif: 'Disconnect PIF',
  disconnectPifConfirm: 'Are you sure you want to disconnect this PIF?',
  deletePif: 'Delete PIF',
  deletePifConfirm: 'Are you sure you want to delete this PIF?',
  deletePifs: 'Delete PIFs',
  deletePifsConfirm: 'Are you sure you want to delete {nPifs, number} PIF{nPifs, plural, one {} other {s}}?',
  pifConnected: 'Connected',
  pifDisconnected: 'Disconnected',
  pifPhysicallyConnected: 'Physically connected',
  pifPhysicallyDisconnected: 'Physically disconnected',

  // ----- User -----
  authToken: 'Token',
  authTokens: 'Authentication tokens',
  authTokenLastUse: 'Last use',
  username: 'Username',
  password: 'Password',
  language: 'Language',
  oldPasswordPlaceholder: 'Old password',
  newPasswordPlaceholder: 'New password',
  confirmPasswordPlaceholder: 'Confirm new password',
  confirmationPasswordError: 'Confirmation password incorrect',
  confirmationPasswordErrorBody: 'Password does not match the confirm password.',
  pwdChangeSuccess: 'Password changed',
  pwdChangeSuccessBody: 'Your password has been successfully changed.',
  pwdChangeError: 'Incorrect password',
  pwdChangeErrorBody: 'The old password provided is incorrect. Your password has not been changed.',
  changePasswordOk: 'OK',
  forgetTokens: 'Forget all authentication tokens',
  forgetTokensExplained: 'This prevents authenticating with existing tokens but the one used by the current session',
  forgetTokensSuccess: 'Successfully forgot authentication tokens',
  forgetTokensError: 'Error while forgetting authentication tokens',
  sshKeys: 'SSH keys',
  newAuthToken: 'New token',
  newSshKey: 'New SSH key',
  deleteAuthTokens: 'Delete selected authentication tokens',
  deleteSshKey: 'Delete',
  deleteSshKeys: 'Delete selected SSH keys',
  newAuthTokenModalTitle: 'New authentication token',
  newSshKeyModalTitle: 'New SSH key',
  sshKeyAlreadyExists: 'SSH key already exists!',
  sshKeyErrorTitle: 'Invalid key',
  sshKeyErrorMessage: 'An SSH key requires both a title and a key.',
  title: 'Title',
  key: 'Key',
  deleteAuthTokenConfirm: 'Delete authentication token',
  deleteAuthTokenConfirmMessage: 'Are you sure you want to delete the authentication token: {id}?',
  deleteAuthTokensConfirm: 'Delete authentication token{nTokens, plural, one {} other {s}}',
  deleteAuthTokensConfirmMessage:
    'Are you sure you want to delete {nTokens, number} autentication token{nTokens, plural, one {} other {s}}?',
  deleteSshKeyConfirm: 'Delete SSH key',
  deleteSshKeyConfirmMessage: 'Are you sure you want to delete the SSH key {title}?',
  deleteSshKeysConfirm: 'Delete SSH key{nKeys, plural, one {} other {s}}',
  deleteSshKeysConfirmMessage:
    'Are you sure you want to delete {nKeys, number} SSH key{nKeys, plural, one {} other {s}}?',
  addOtpConfirm: 'Add OTP authentication',
  addOtpConfirmMessage:
    'To enable OTP authentication, add it to your application and then enter the current password to validate.',
  addOtpInvalidPassword: 'Password is invalid',
  removeOtpConfirm: 'Remove OTP authentication',
  removeOtpConfirmMessage: 'Are you sure you want to remove OTP authentication?',
  OtpAuthentication: 'OTP authentication',
  OtpCode: 'OTP code',

  // ----- Usage -----
  others: '{nOthers, number} other{nOthers, plural, one {} other {s}}',

  // ----- Logs -----
  logUser: 'User',
  logMessage: 'Message',
  logSuggestXcpNg: 'Use XCP-ng to get rid of restrictions',
  logXapiError: 'This is a XenServer/XCP-ng error',
  logError: 'Error',
  logTitle: 'Logs',
  logDisplayDetails: 'Display details',
  logDownload: 'Download log',
  logTime: 'Date',
  logDelete: 'Delete log',
  logsDelete: 'Delete logs',
  logsJobId: 'Job ID',
  logsJobName: 'Job name',
  logsBackupTime: 'Backup time',
  logsRestoreTime: 'Restore time',
  copyLogToClipboard: 'Copy log to clipboard',
  logsVmNotFound: 'VM not found!',
  logsFailedRestoreError: 'Click to show error',
  logsFailedRestoreTitle: 'Restore error',
  logDeleteMultiple: 'Delete log{nLogs, plural, one {} other {s}}',
  logDeleteMultipleMessage: 'Are you sure you want to delete {nLogs, number} log{nLogs, plural, one {} other {s}}?',
  logIndicationToEnable: 'Click to enable',
  logIndicationToDisable: 'Click to disable',
  reportBug: 'Report a bug',
  unhealthyVdiChainError: 'Job canceled to protect the VDI chain',
  backupRestartVm: "Restart VM's backup",
  backupForceRestartVm: "Force restart VM's backup",
  backupRestartFailedVms: "Restart failed VMs' backup",
  backupForceRestartFailedVms: "Force restart failed VMs' backup",
  clickForMoreInformation: 'Click for more information',
  goToThisJob: 'Click to go to this job',
  goToCorrespondingLogs: 'Click to see corresponding logs',

  // ----- IPs ------
  ipPoolName: 'Name',
  ipPoolIps: 'IPs',
  ipPoolNetworks: 'Networks',
  ipsNoIpPool: 'No IP pools',
  ipsCreate: 'Create',
  ipsVifs: 'VIFs',
  ipsNotUsed: 'Not used',
  ipPoolUnknownVif: 'unknown VIF',
  ipPoolNameAlreadyExists: 'Name already exists',

  // ----- Shortcuts -----
  shortcutModalTitle: 'Keyboard shortcuts',
  shortcut_XoApp: 'Global',
  shortcut_XoApp_GO_TO_HOSTS: 'Go to hosts list',
  shortcut_XoApp_GO_TO_POOLS: 'Go to pools list',
  shortcut_XoApp_GO_TO_VMS: 'Go to VMs list',
  shortcut_XoApp_GO_TO_SRS: 'Go to SRs list',
  shortcut_XoApp_CREATE_VM: 'Create a new VM',
  shortcut_XoApp_UNFOCUS: 'Unfocus field',
  shortcut_XoApp_HELP: 'Show shortcuts key bindings',
  shortcut_Home: 'Home',
  shortcut_Home_SEARCH: 'Focus search bar',
  shortcut_Home_NAV_DOWN: 'Next item',
  shortcut_Home_NAV_UP: 'Previous item',
  shortcut_Home_SELECT: 'Select item',
  shortcut_Home_JUMP_INTO: 'Open',
  shortcut_SortedTable: 'Supported tables',
  shortcut_SortedTable_SEARCH: 'Focus the table search bar',
  shortcut_SortedTable_NAV_DOWN: 'Next item',
  shortcut_SortedTable_NAV_UP: 'Previous item',
  shortcut_SortedTable_SELECT: 'Select item',
  shortcut_SortedTable_ROW_ACTION: 'Action',

  // ----- Settings/ACLs -----
  settingsAclsButtonTooltipVM: 'VM',
  settingsAclsButtonTooltiphost: 'Hosts',
  settingsAclsButtonTooltippool: 'Pool',
  settingsAclsButtonTooltipSR: 'SR',
  settingsAclsButtonTooltipnetwork: 'Network',

  // ----- Settings/Cloud configs -----
  settingsCloudConfigTemplate: 'Template',
  confirmDeleteCloudConfigsTitle: 'Delete cloud config{nCloudConfigs, plural, one {} other {s}}',
  confirmDeleteCloudConfigsBody:
    'Are you sure you want to delete {nCloudConfigs, number} cloud config{nCloudConfigs, plural, one {} other {s}}?',
  confirmDeleteNetworkConfigsTitle: 'Delete network config{nNetworkConfigs, plural, one {} other {s}}',
  confirmDeleteNetworkConfigsBody:
    'Are you sure you want to delete {nNetworkConfigs, number} network config{nNetworkConfigs, plural, one {} other {s}}?',
  deleteCloudConfig: 'Delete cloud config',
  editCloudConfig: 'Edit cloud config',
  deleteSelectedCloudConfigs: 'Delete selected cloud configs',
  networkConfig: 'Network config',
  cloudConfig: 'Cloud config',

  // ----- Config -----
  noConfigFile: 'No config file selected',
  importTip: 'Try dropping a config file here or click to select a config file to upload.',
  config: 'Config',
  importConfig: 'Import',
  importConfigEnterPassphrase: 'If the config is encrypted, please enter the passphrase:',
  importConfigSuccess: 'Config file successfully imported',
  importConfigError: 'Error while importing config file',
  exportConfig: 'Export',
  exportConfigEnterPassphrase: 'If you want to encrypt the exported config, please enter a passphrase:',
  downloadConfig: 'Download current config',

  // ----- SR -----
  andNMore: 'and {n} more',
  disabledVdiMigrateTooltip: "Snapshots and base copies can't be migrated individually",
  srReconnectAllModalTitle: 'Reconnect all hosts',
  srReconnectAllModalMessage: 'This will reconnect this SR to all its hosts.',
  srDisconnectAllModalTitle: 'Disconnect all hosts',
  srDisconnectAllModalMessage: 'This will disconnect this SR from all its hosts.',
  srsDisconnectAllModalMessage:
    'This will disconnect each selected SR from its host (local SR) or from every hosts of its pool (shared SR).',
  forgetNSrsModalMessage: 'Are you sure you want to forget {nSrs, number} SR{nSrs, plural, one {} other{s}}?',
  srForgetModalWarning:
    'You will lose all the metadata, meaning all the links between the VDIs (disks) and their respective VMs. This operation cannot be undone.',
  srAllDisconnected: 'Disconnected',
  srSomeConnected: 'Partially connected',
  srAllConnected: 'Connected',
  maintenanceSrModalBody:
    'In order to put this SR in maintenance mode, the following VM{n, plural, one {} other {s}} will be shut down. Are you sure you want to continue?',
  maintenanceMode: 'Maintenance mode',
  migrateSelectedVdis: 'Migrate selected VDIs',
  migrateVdiMessage:
    'All the VDIs attached to a VM must either be on a shared SR or on the same host (local SR) for the VM to be able to start.',

  // ----- XO cloud config -----
  backedUpXoConfigs: 'Backed up XO Configs',
  manageXoConfigCloudBackup: 'Manage XO Config Cloud Backup',
  selectXoConfig: 'Select XO config',
  xoConfigCloudBackup: 'XO Config Cloud Backup',
  xoConfigCloudBackupTips:
    'Your encrypted configuration is securely stored inside your Vates account and backed up once a day',
  xoCloudConfigEnterPassphrase: 'Passphrase is required to encrypt backups',
  xoCloudConfigRestoreEnterPassphrase: 'Enter the passphrase:',

  // ----- XOSAN -----
  xosanTitle: 'XOSAN',
  xosanSuggestions: 'Suggestions',
  xosanDisperseWarning: 'Warning: using disperse layout is not recommended right now. Please read {link}.',
  xosanName: 'Name',
  xosanHost: 'Host',
  xosanHosts: 'Connected Hosts',
  xosanPool: 'Pool',
  xosanSize: 'Size',
  xosanUsedSpace: 'Used space',
  license: 'License',
  xosanMultipleLicenses: 'This XOSAN has more than 1 license!',
  xosanNeedPack: 'XOSAN pack needs to be installed and up to date on each host of the pool.',
  xosanInstallIt: 'Install it now!',
  xosanNeedRestart: 'Some hosts need their toolstack to be restarted before you can create an XOSAN',
  xosanRestartAgents: 'Restart toolstacks',
  xosanSrOnSameHostMessage: 'Select no more than 1 SR per host',
  xosanLayout: 'Layout',
  xosanRedundancy: 'Redundancy',
  xosanCapacity: 'Capacity',
  xosanAvailableSpace: 'Available space',
  xosanDiskLossLegend: '* Can fail without data loss',
  xosanCreate: 'Create',
  xosanCommunity: 'XOSAN is available in XOA',
  xosanNew: 'New',
  xosanAdvanced: 'Advanced',
  xosanRemoveSubvolumes: 'Remove subvolumes',
  xosanAddSubvolume: 'Add subvolume…',
  xosanWarning:
    "This version of XOSAN SR is from the first beta phase. You can keep using it, but to modify it you'll have to save your disks and re-create it.",
  xosanVlan: 'VLAN',
  xosanNoSrs: 'No XOSAN found',
  xosanPbdsDetached: 'Some SRs are detached from the XOSAN',
  xosanBadStatus: 'Something is wrong with: {badStatuses}',
  xosanRunning: 'Running',
  xosanUpdatePacks: 'Update packs',
  xosanPackUpdateChecking: 'Checking for updates',
  xosanPackUpdateError:
    'Error while checking XOSAN packs. Please make sure that the Cloud plugin is installed and loaded, and that the updater is reachable.',
  xosanPackUpdateUnavailable: 'XOSAN resources are unavailable',
  xosanPackUpdateUnregistered: 'Not registered for XOSAN resources',
  xosanPackUpdateUpToDate: "✓ This pool's XOSAN packs are up to date!",
  xosanPackUpdateVersion: 'Update pool with latest pack v{version}',
  xosanDelete: 'Delete XOSAN',
  xosanFixIssue: 'Fix',
  xosanCreatingOn: 'Creating XOSAN on {pool}',
  xosanState_configuringNetwork: 'Configuring network…',
  xosanState_importingVm: 'Importing VM…',
  xosanState_copyingVms: 'Copying VMs…',
  xosanState_configuringVms: 'Configuring VMs…',
  xosanState_configuringGluster: 'Configuring gluster…',
  xosanState_creatingSr: 'Creating SR…',
  xosanState_scanningSr: 'Scanning SR…',
  xosanXcpngWarning:
    'XOSAN cannot be installed on XCP-ng yet. Incoming XOSANv2 will be compatible with XCP-ng: {link}.',
  // Pack download modal
  xosanInstallCloudPlugin: 'Install XOA plugin first',
  xosanLoadCloudPlugin: 'Load XOA plugin first',
  xosanNoPackFound: 'No compatible XOSAN pack found for your XenServer versions.',
  // SR tab XOSAN
  xosanVmsNotRunning: 'Some XOSAN Virtual Machines are not running',
  xosanVmsNotFound: 'Some XOSAN Virtual Machines could not be found',
  xosanFilesNeedingHealing: 'Files needing healing',
  xosanFilesNeedHealing: 'Some XOSAN Virtual Machines have files needing healing',
  xosanHostNotInNetwork: 'Host {hostName} is not in XOSAN network',
  xosanVm: 'VM controller',
  xosanUnderlyingStorage: 'SR',
  xosanReplace: 'Replace…',
  xosanOnSameVm: 'On same VM',
  xosanBrickName: 'Brick name',
  xosanBrickUuid: 'Brick UUID',
  xosanBrickSize: 'Brick size',
  xosanMemorySize: 'Memory size',
  xosanStatus: 'Status',
  xosanArbiter: 'Arbiter',
  xosanUsedInodes: 'Used Inodes',
  xosanBlockSize: 'Block size',
  xosanDevice: 'Device',
  xosanFsName: 'FS name',
  xosanMountOptions: 'Mount options',
  xosanPath: 'Path',
  xosanJob: 'Job',
  xosanPid: 'PID',
  xosanPort: 'Port',
  xosanReplaceBrickErrorTitle: 'Missing values',
  xosanReplaceBrickErrorMessage: 'You need to select a SR and a size',
  xosanAddSubvolumeErrorTitle: 'Bad values',
  xosanAddSubvolumeErrorMessage: 'You need to select {nSrs, number} and a size',
  xosanSelectNSrs: 'Select {nSrs, number} SRs',
  xosanRun: 'Run',
  xosanRemove: 'Remove',
  xosanVolume: 'Volume',
  xosanVolumeOptions: 'Volume options',
  xosanCouldNotFindVm: 'Could not find VM',
  xosanUnderlyingStorageUsage: 'Using {usage}',
  xosanCustomIpNetwork: 'Custom IP network (/24)',
  xosanIssueHostNotInNetwork: 'Will configure the host xosan network device with a static IP address and plug it in.',
  // ----- XOSTOR -----
  approximateSrCapacity: 'Approximate SR capacity',
  byDefaultManagementNetworkUsed: 'By default, the management network will be used',
  cantFetchDisksFromNonXcpngHost: 'Unable to fetch physical disks from non-XCP-ng host',
  createInterface: 'Create interface',
  createXostoreConfirm:
    'If packages need to be installed, the toolstack on those hosts will restart. Do you want to continue?',
  diskAlreadyMounted: 'The disk is mounted on: {mountpoint}',
  diskful: 'Diskful',
  diskHasExistingPartition: 'The disk has existing partition',
  diskIncompatibleXostor: 'Disk incompatible with XOSTOR',
  diskIsReadOnly: 'The disk is Read-Only',
  diskless: 'Diskless',
  disks: 'Disks',
  fieldRequired: '{field} is required',
  fieldsMissing: 'Some fields are missing',
  hostBoundToMultipleXostorLicenses: 'More than 1 XOSTOR license on {host}',
  hostHasNoXostorLicense: 'No XOSTOR license on {host}',
  hostsNotSameNumberOfDisks: 'Hosts do not have the same number of disks',
  ignoreFileSystems: 'Ignore file systems',
  ignoreFileSystemsInfo: 'Force LINSTOR group creation on existing filesystem',
  interfaceName: 'Interface name',
  interfaceNameRequired: 'Interface name is required if a network is provided',
  interfaceNameReserved: 'This interface name is reserved',
  isTapdevDisk: 'This is "tapdev" disk',
  licenseBoundUnknownXostor: 'License attached to an unknown XOSTOR',
  licenseNotBoundXostor: 'No XOSTOR attached',
  licenseExpiredXostorWarning:
    'License{nLicenseIds, plural, one {} other {s}} {licenseIds} ha{nLicenseIds, plural, one {s} other {ve}} expired on {host}',
  manageXostorWarning: 'To manage this XOSTOR storage, you must resolve the following issues:',
  networkNoPifs: 'The network does not have PIFs',
  networks: 'Networks',
  notXcpPool: 'Not an XCP-ng pool',
  noXostorFound: 'No XOSTOR found',
  numberOfHosts: 'Number of hosts',
  objectDoesNotMeetXostorRequirements: '{object} does not meet XOSTOR requirements. Refer to the documentation.',
  onlyShowXostorRequirements: 'Only show {type} that meet XOSTOR requirements',
  poolAlreadyHasXostor: 'Pool already has a XOSTOR',
  poolNotRecentEnough: 'Not recent enough. Current version: {version}',
  pifsNoIp: 'Not all PIFs have an IP',
  pifsNotAttached: 'Not all PIFs are attached',
  pifsNotStatic: 'Not all PIFs are static',
  replication: 'Replication',
  replicationCountHigherThanHostsWithDisks: 'Replication count is higher than number of hosts with disks',
  resourceList: 'Resource list',
  rpuRequireVmsReboot: 'To fully apply the patches, some VMs will reboot. Are you sure you want to continue?',
  selectDisks: 'Select disk(s)…',
  selectedDiskTypeIncompatibleXostor: 'Only disks of type "Disk" and "Raid" are accepted. Selected disk type: {type}.',
  setAsPreferred: 'Set as preferred',
  storage: 'Storage',
  summary: 'Summary',
  tieBreaker: 'Tie breaker',
  whiteSpaceNotAllowed: 'White space not allowed',
  wrongNumberOfHosts: 'Wrong number of hosts',
  xostor: 'XOSTOR',
  xostorAvailableInXoa: 'XOSTOR is available in XOA',
  xostorCreation: 'XOSTOR creation',
  xostorDiskRequired: 'At least one disk is required',
  xostorDisksDropdownLabel: '({nDisks, number} disk{nDisks, plural, one {} other {s}}) {hostname}',
  xostorPackagesWillBeInstalled: '"xcp-ng-release-linstor" and "xcp-ng-linstor" will be installed on each host',
  xostorReplicationWarning: 'If a disk dies, you will lose data',

  // Hub
  hubPage: 'Hub',
  hubCommunity: 'Hub is available in XOA',
  noDefaultSr: 'The selected pool has no default SR',
  successfulInstall: 'VM installed successfully',
  vmNoAvailable: 'No VMs available ',
  create: 'Create',
  hubResourceAlert: 'Resource alert',
  os: 'OS',
  version: 'Version',
  size: 'Size',
  totalDiskSize: 'Total disk size',
  hideInstalledPool: 'Already installed templates are hidden',
  hubImportNotificationTitle: 'XVA import',
  hubTemplateDescriptionNotAvailable: 'No description available for this template',
  recipeCreatedSuccessfully: 'Recipe created successfully',
  recipeViewCreatedVms: 'View created VMs',
  templatesLabel: 'Templates',
  recipesLabel: 'Recipes',
  network: 'Network',

  // Recipe Kubernetes
  recipeSelectK8sVersion: 'Select Kubernetes version',
  recipeClusterNameLabel: 'Cluster name',
  recipeNumberOfNodesLabel: 'Number of worker nodes',
  recipeSshKeyLabel: 'SSH key',
  recipeStaticIpAddresses: 'Static IP addresses',
  recipeFaultTolerance: 'Control plane fault tolerance',
  recipeNoneFaultTolerance: 'No fault tolerance (one control plane)',
  recipeOneFaultTolerance: 'One fault tolerance (three control planes)',
  recipeTwoFaultTolerance: 'Two fault tolerances (five control planes)',
  recipeThreeFaultTolerance: 'Three fault tolerances (seven control planes)',
  recipeHaControPlaneIpAddress: 'Control plane { i, number } node IP address/subnet mask',
  recipeVip: 'VIP address',
  recipeControlPlaneIpAddress: 'Control plane node IP address/subnet mask',
  recipeWorkerIpAddress: 'Worker node { i, number } IP address/subnet mask',
  recipeGatewayIpAddress: 'Gateway IP address',
  recipeNameserverAddresses: 'Nameserver IP addresses',
  recipeStaticIpAddress: 'Static IP Address',
  recipeNameserverAddressesExample: '192.168.1.0,172.16.1.0',
  recipeSearches: 'Search domains',
  recipeSearchesExample: 'domain.com,search.org',
  recipeLabelAllowInsecureXoConnection: 'Allow insecure XO connection',
  recipeTooltipAcceptInsecureXoConnection: 'Check if you want to accept self signed certificates',
  recipeXoFqdn: 'Xen Orchestra FQDN / IP',
  recipeXoFqdnTooltip:
    'FQDN or IP address of the Xen Orchestra instance reachable by the Kubernetes cluster for the XO CCM',
  recipeUseCustomClusterCIDR: 'Use a custom cluster CIDR',
  recipeClusterPodCIDR: 'Cluster CIDR',
  recipeClusterServiceCIDR: 'Service CIDR',

  // Recipe DC Scope
  vmNameCompleteLabel: 'VM Name',
  easyVirtVmLabel: 'EasyVirt VM',
  easyVirtDescription: 'Creates a DC Scope or a DC NetScope VM with parameters and application inside',
  xoPassword: 'Xen Orchestra Password',
  xoUsername: 'Xen Orchestra Username',
  dcNetscopePassword: 'Password for DC Netscope web interface',
  xoFqdn: 'Xen Orchestra FQDN / IP',
  dcScopeVm: 'DC Scope VM',
  dcNetScopeVm: 'DC NetScope VM',
  recipeEasyVirt: 'EasyVirt VM to deploy',
  recipeUserCompany: 'Company',
  gdprCompliance: 'I agree that the data in this form may be shared exclusively between Vates and EasyVirt',
  recipeUserEmail: 'Email for EasyVirt',
  performanceConfigDcScope: 'Performance for VM DC Scope',
  dcScopeTest: 'Test config (10 VM): CPU(2), RAM(4), Disk(10GB)',
  dcScopeVerySmall: 'Very small config (<1000 VM): CPU(2), RAM(12), Disk(250GB)',
  dcScopeSmall: 'Small config (1000-2500 VM): CPU(2), RAM(24), Disk(550GB)',
  dcScopeMedium: 'Medium config (2500-5000 VM): CPU(4), RAM(48), Disk(750GB)',
  dcScopeBig: 'Big config (5000-7500 VM): CPU(4), RAM(64), Disk(1.2TB)',
  dcScopeVeryBig: 'Very big config (7500-10000 VM: CPU(8), RAM(96), Disk(1.5TB)',
  dcScopeHuge: 'Huge config (>10000 VM): CPU(8), RAM(128), Disk(2TB)',

  // Audit
  auditActionEvent: 'Action/Event',
  auditAlteredRecord: 'The record ({ id }) was altered ({ n, number } valid records)',
  auditCheckIntegrity: 'Check integrity',
  auditCopyFingerprintToClipboard: 'Copy fingerprint to clipboard',
  auditGenerateNewFingerprint: 'Generate a new fingerprint',
  auditMissingRecord: 'The record ({ id }) is missing ({ n, number } valid records)',
  auditEnterFingerprint: 'Fingerprint',
  auditEnterFingerprintInfo:
    "Enter the saved fingerprint to check the previous logs' integrity. If you don't have any, click OK.",
  auditRecord: 'Audit record',
  auditIntegrityVerified: 'Integrity verified',
  auditSaveFingerprintInfo: 'Keep this fingerprint to be able to check the integrity of the current records later.',
  auditSaveFingerprintInErrorInfo:
    'However, if you trust the current state of the records, keep this fingerprint to be able to check their integrity later.',
  auditNewFingerprint: 'New fingerprint',
  downloadAuditRecords: 'Download records',
  displayAuditRecord: 'Display record',
  noAuditRecordAvailable: 'No audit record available',
  refreshAuditRecordsList: 'Refresh records list',
  auditInactiveUserActionsRecord: 'User actions recording is currently inactive',
  importAuditRecords: 'Import records',
  importRecordsTip: 'Try dropping a .ndjson.gz or .ndjson file here or click to select a file.',
  importAuditRecordsCleanList: 'Reset',
  importAuditRecordsButton: 'Import',
  importAuditRecordsTooltip: 'Import audit record from another XOA. Audit log database must be empty.',
  importAuditRecordsSuccess: 'Audit records successfully imported',
  importAuditRecordsSuccessWithProblems:
    "Audit records successfully imported, but {nInvalidRecords} invalid records were imported and at least {nMissingRecords} records were missing. Logs prior to the missing entries will not appear. The oldest visible log's ID is {lastLogId}",
  importAuditRecordsError: 'Error while importing audit records: {importError}',
  noAuditRecordsFile: 'No audit records file selected',

  // Licenses
  allHostsMustBeBound: 'All hosts must be bound to a license',
  boundSelectLicense: 'Bound (Plan (ID), expiration date, host - pool)',
  bindXcpngLicenses: 'Bind XCP-ng licenses',
  confirmBindingOnUnsupportedHost:
    'You are about to bind {nLicenses, number} professional support license{nLicenses, plural, one {} other {s}} on older and unsupported XCP-ng version{nLicenses, plural, one {} other {s}}. Are you sure you want to continue?',
  confirmRebindLicenseFromFullySupportedPool: 'The following pools will no longer be fully supported',
  licenses: 'Licenses',
  licensesBinding: 'Licenses binding',
  notEnoughXcpngLicenses: 'Not enough XCP-ng licenses',
  notBoundSelectLicense: 'Not bound (Plan (ID), expiration date)',
  xcpngLicensesBindingAvancedView: "To bind an XCP-ng license, go to the pool's Advanced tab.",
  xosanUnregisteredDisclaimer:
    'You are not registered and therefore will not be able to create or manage your XOSAN SRs. {link}',
  xosanSourcesDisclaimer:
    'In order to create a XOSAN SR, you need to use the Xen Orchestra Appliance and buy a XOSAN license on {link}.',
  registerNow: 'Register now!',
  licensesUnregisteredDisclaimer: 'You need to register your appliance to manage your licenses.',
  licenseProduct: 'Product',
  licensePurchaser: 'Purchaser',
  licenseExpires: 'Expires',
  licensePurchaserYou: 'You',
  productSupport: 'Support',
  licenseNotBoundXosan: 'No XOSAN attached',
  licenseNotBoundProxy: 'No proxy attached',
  licenseBoundUnknownXosan: 'License attached to an unknown XOSAN',
  licenseBoundUnknownProxy: 'License attached to an unknown proxy',
  licensesManage: 'Manage the licenses',
  newLicense: 'New license',
  refreshLicenses: 'Refresh',
  xosanLicenseRestricted: 'Limited size because XOSAN is in trial',
  xosanAdminNoLicenseDisclaimer: 'You need a license on this SR to manage the XOSAN.',
  xosanAdminExpiredLicenseDisclaimer:
    'Your XOSAN license has expired. You can still use the SR but cannot administrate it anymore.',
  xosanCheckLicenseError: 'Could not check the license on this XOSAN SR',
  getLicensesError: 'Could not fetch licenses',
  licenseHasExpired: 'License has expired.',
  licenseBoundToOtherXoa: 'License bound to another XOA',
  licenseBoundToThisXoa: 'This license is active on this XOA',
  licenseExpiresDate: 'License expires on {date}.',
  updateLicenseMessage: 'Update the license now!',
  xosanUnknownSr: 'Unknown XOSAN SR.',
  contactUs: 'Contact us!',
  xosanNoLicense: 'No license.',
  unlockNow: 'Unlock now!',
  selectLicense: 'Select a license',
  bindLicense: 'Bind license',
  bindLicenses: 'Bind licenses',
  expiresOn: 'expires on {date}',
  xosanInstallXoaPlugin: 'Install XOA plugin first',
  xosanLoadXoaPlugin: 'Load XOA plugin first',
  bindXoaLicense: 'Activate license',
  rebindXoaLicense: 'Move license to this XOA',
  bindXoaLicenseConfirm: 'Are you sure you want to activate this license on your XOA? This action is not reversible!',
  bindXoaLicenseConfirmText: 'activate {licenseType} license',
  updateNeeded: 'Update needed',
  starterLicense: 'Starter license',
  enterpriseLicense: 'Enterprise license',
  premiumLicense: 'Premium license',
  trialLicenseInfo: 'You are currently in a {edition} trial period that will end on {date, date, medium}',
  licenseNearlyExpired:
    'Your current Xen Orchestra license is about to expire (less than {duration} to {date, date, medium}). Please reach out to your vendor.',
  licenseExpired:
    'Your current Xen Orchestra license has expired ({date, date, medium}). Please reach out to your vendor.',
  proxyMultipleLicenses: 'This proxy has more than 1 license!',
  proxyUnknownVm: 'Unknown proxy VM.',
  xostorProSupportEnabled: 'XOSTOR Pro Support enabled',

  // ----- plan -----
  onlyAvailableToEnterprise: 'Only available to Enterprise users',

  // ----- proxies -----
  forgetProxyApplianceTitle: 'Forget prox{n, plural, one {y} other {ies}}',
  forgetProxyApplianceMessage: 'Are you sure you want to forget {n, number} prox{n, plural, one {y} other {ies}}?',
  forgetProxies: 'Forget proxy(ies)',
  destroyProxyApplianceTitle: 'Destroy prox{n, plural, one {y} other {ies}}',
  destroyProxyApplianceMessage: 'Are you sure you want to destroy {n, number} prox{n, plural, one {y} other {ies}}?',
  destroyProxies: 'Destroy proxy(ies)',
  deployProxy: 'Deploy a proxy',
  redeployProxy: 'Redeploy proxy',
  redeployProxyAction: 'Redeploy this proxy',
  redeployProxyWarning: 'This action will destroy the old proxy VM',
  registerProxy: 'Register a proxy',
  noProxiesAvailable: 'No proxies available',
  checkProxyHealth: 'Test your proxy',
  updateProxyApplianceSettings: 'Update appliance settings',
  urlNotFound: 'URL not found',
  proxyAuthToken: 'Authentication token',
  proxyConnectionFailedAfterRegistrationMessage: 'Unable to connect to this proxy. Do you want to forget it?',
  proxyCopyUrl: 'Copy proxy URL',
  proxyError: 'Proxy error',
  proxyOptionalVmUuid: 'VM UUID is optional but recommended.',
  proxyTestSuccess: 'Test passed for {name}',
  proxyTestSuccessMessage: 'The proxy appears to work correctly',
  proxyTestFailed: 'Test failed for {name}',
  proxyTestFailedConnectionIssueMessage: 'Unable to connect to this proxy',
  proxyLinkedRemotes: 'Click to see linked remotes',
  proxyLinkedBackups: 'Click to see linked backups',
  proxyNetworkDnsPlaceHolder: 'Default to: {dns}',
  proxyNetworkNetmaskPlaceHolder: 'Default to: {netmask}',
  proxySrPredicateInfo: 'The select only contains SRs connected to at least one HVM-capable host',
  httpProxy: 'HTTP proxy',
  httpProxyPlaceholder: 'protocol://username:password@address:port',
  proxyUpgradesError: 'Unable to check upgrades availability',
  proxyApplianceSettingsInfo: 'Leave the field empty and click on OK to remove the existing configuration',
  proxyUpToDate: 'Your proxy is up-to-date',
  proxyRunningBackupsMessage:
    'The upgrade will interrupt {nJobs, number} running backup job{nJobs, plural, one {} other {s}}. Do you want to continue?',
  proxiesNeedUpgrade: 'Some proxies need to be upgraded.',
  upgradeNeededForProxies: 'Some proxies need to be upgraded. Click here to get more information.',
  xoProxyConcreteGuide: 'XO Proxy: a concrete guide',
  someProxiesHaveErrors:
    '{n, number} prox{n, plural, one {y} other {ies}} ha{n, plural, one {s} other {ve}} error{n, plural, one {} other {s}}',

  // ----- Utils -----
  secondsFormat: '{seconds, plural, one {# second} other {# seconds}}',
  durationFormat:
    '{days, plural, =0 {} one {# day } other {# days }}{hours, plural, =0 {} one {# hour } other {# hours }}{minutes, plural, =0 {} one {# minute } other {# minutes }}{seconds, plural, =0 {} one {# second} other {# seconds}}',

  // ----- IPMI -----
  currentBiosVersion: 'Current BIOS version: {version}',
  downloadBiosUpdate: 'Download BIOS update ({version})',
  highestCpuTemperature: '{n, number}x CPU{n, plural, one {} other {s}} (highest: {degres})',
  highestFanSpeed: '{n, number}x fan{n, plural, one {} other {s}} (highest: {speed})',
  inletTemperature: 'Inlet temperature',
  ipmi: 'IPMI',
  nFanStatus: '{n, number}x fan{n, plural, one {} other {s}} status: {status}',
  nPsuStatus: '{n, number}x PSU{n, plural, one {} other {s}} status: {status}',
  outletTemperature: 'Outlet temperature',
  totalPower: 'Total power',
}
forEach(messages, function (message, id) {
  if (typeof message === 'string') {
    messages[id] = {
      id,
      defaultMessage: message,
    }
  } else if (!message.id) {
    message.id = id
  }
})

module.exports = messages
